【问题标题】:docker-compose build with multiple services in docker-compose.ymldocker-compose 在 docker-compose.yml 中构建多个服务
【发布时间】:2019-06-22 22:02:48
【问题描述】:

我是 docker-compose 的新手,我使用 flask 和 redis 构建了一个简单的 web 应用程序,它在我的 localhost 中运行良好,我的问题是如何将这个 web 应用程序(包括 python 和 redis 图像)推送到 docker hub 并拉取该图像来自另一台机器。

我通常做 docker-compose build, 码头工人推

version: '3'
services:
 web:
  build: .
  image: "alhaffar/flask_redis_app:2.0"
  ports:
   - "8088:5000"
  depends_on:
   - redis
 redis:
  image: "redis:alpine"

Dockerfile

FROM python:3.7

# CHANGE WORKIN DIR AND COPY FILES
WORKDIR /code
COPY . /code

# INSTALL REQUIRED PACAKGES
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# RUN THE APP
CMD ["python", "./main.py"]

当我尝试将映像拉入另一台机器并发出 docker run 时,它只运行没有 redis 映像的 python 映像。

如何运行所有图像

【问题讨论】:

  • 你需要你的私有仓库,需要登录到那个仓库,推送你的镜像,然后在其他机器上再次登录并拉取镜像。这可以通过公共中心来完成,但如果您不打算与社区共享您的应用程序,那么私人回购可能是最好的选择。顺便说一句,GitLab 有内置的私有仓库(虽然设置起来可能有点麻烦)。
  • 另外,为了清楚起见:docker-compose 与一堆图像/服务一起工作,而 docker registry 一个接一个地处理图像——它不存储在你的 docker 中定义的任何依赖项-撰写.yml。这在您的问题或我的回答中没有太大变化,只是认为如果我澄清一下会更好。
  • 另一个“也”,你是说库存图片“redis”没有被拉走?不是您的自定义图片?

标签: docker docker-compose


【解决方案1】:

Dockerhub 和其他 docker 注册表使用图像。 Docker-compose 只是一种抽象,它通过使用一个配置文件 - docker-compose 来帮助设置一组可以一起工作的图像。没有像 docker-compose 注册表这样的东西。然后,如果您在另一台机器上有您的 docker-compose 文件,您只需使用 docker-compose up 并且应该提取图像 - 假设它们已发布到某个注册表(公共/私有)。如果您使用的是 redis 官方镜像,您的应用程序的镜像应该由您发布,并且 refi 将从 dockerhub 注册表中获取。

当您进行一些本地开发并希望快速设置您的工作环境时,Docker-compose 很有用。如果你想在其他机器上设置这个环境,你必须与他们共享 docker-compose 文件,并在另一台机器上安装 docker 和 docker-compose。

如果您的 docker-compose 配置为在启动时构建一些图像,您仍然可以使用 docker-compose push 命令推送此图像。

【讨论】:

    【解决方案2】:

    使用 Docker Compose 脚本,您可以做两件事:

    1. 构建您的 Flask 应用程序 —> 图 1
    2. 拉取并运行 Redis —> 图 2

    如果您将 Image 1 推送到 DockerHub 并将其拉到另一台机器上,您将丢失第二个 Image。

    您要做的是在没有build 行的第二台机器上运行Docker compose 脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 2016-11-18
      • 2021-08-18
      • 1970-01-01
      • 2020-06-02
      • 2022-11-11
      • 1970-01-01
      相关资源
      最近更新 更多