docker-compose在docker-compose.yml中具有多个服务的构建

时间:2019-06-22 22:02:48

标签: docker docker-compose

我是docker-compose的新手,我使用flask和redis构建了一个简单的Web应用程序,并且在我的本地主机上运行良好,我的问题是如何将包含python和redis图像的Web应用程序推送到docker hub和pull来自另一台机器的图像。

我通常会进行docker-compose构建, 码头工人推

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时,它仅运行python映像而没有redis映像。

我如何运行所有图像

2 个答案:

答案 0 :(得分:1)

Dockerhub和其他Docker注册表使用映像。 Docker-compose只是一个抽象,它通过使用一个配置文件docker-compose来帮助建立一堆可以协同工作的映像。没有像docker-compose注册表那样的东西。然后,如果您在另一台机器上拥有docker-compose文件,则只需使用docker-compose up,然后应将图像拉出-假设它们已发布到某个注册表(公共/私有)。如果您使用的是Redis官方映像,则应由您发布与应用程序一起的映像,并且将从dockerhub注册表中获取引用。

当您进行一些本地开发并希望快速设置工作环境时,Docker-compose会很有帮助。如果要在其他计算机上设置此环境,则必须与它们共享docker-compose文件,并在另一台计算机上安装docker和docker-compose。

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

答案 1 :(得分:1)

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

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

如果将映像1推入DockerHub并将其拉到另一台机器上,则会丢失第二个映像。

您要执行的操作是在第二台机器上运行Docker compose脚本,而无需使用build行。