Docker Compose 与 Dockerfile 有什么区别

新手上路,请多包涵

我一直在阅读和学习 Docker ,并试图正确选择要使用的 Django 设置。到目前为止,有两种:

Docker ComposeDockerfile

我知道 DockerfilesDocker Compose 中使用,但我不确定将所有内容放在一个带有多个 FROM 命令的不同图像的大型 Dockerfile 中是否是一种好习惯?

我想使用几个不同的图像,包括:

 uwsgi
nginx
postgres
redis
rabbitmq
celery with cron

请告知使用 Docker 设置此类环境的最佳实践。

如果有帮助,我在 Mac 上,所以使用 boot2docker

我遇到的一些问题:

  1. Docker Compose 与 Python3 不兼容
  2. 我想将我的项目容器化,所以如果一个大型 Dockerfile 不理想,那么我觉得我需要使用 Docker Compose 将其分解
  3. 我可以使项目 Py2 和 Py3 兼容,所以我倾向于 django-compose

原文由 Aaron Lelevier 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 459
2 个回答

答案都不是。

如果您将构建命令添加到项目的 docker-compose.yml 中,Docker Compose(此处称为 compose)将使用 Dockerfile。

您的 Docker 工作流程应该是为您希望创建的每个图像构建一个合适的 Dockerfile ,然后使用 compose 使用 build 命令来组装图像。

您可以使用 build /path/to/dockerfiles/blah 指定单个 Dockerfile 的路径,其中 /path/to/dockerfiles/blah 是 blah 的 Dockerfile 所在的位置。

原文由 booyaa 发布,翻译遵循 CC BY-SA 3.0 许可协议

Dockerfile

在此处输入图像描述

Dockerfile 是一个简单的文本文件,其中包含用户可以调用来组装图像的命令。

示例, Dockerfile

 FROM ubuntu:latest
MAINTAINER john doe

RUN apt-get update
RUN apt-get install -y python python-pip wget
RUN pip install Flask

ADD hello.py /home/hello.py

WORKDIR /home


码头工人撰写

在此处输入图像描述

码头工人撰写

  • 是一个用于定义和运行多容器 Docker 应用程序的工具。

  • docker-compose.yml 中定义构成您的应用程序的服务,以便它们可以在隔离环境中一起运行。

  • 只需运行 docker-compose up 即可在一个命令中运行应用程序

示例, docker-compose.yml

 version: "3"
services:
  web:
    build: .
    ports:
    - '5000:5000'
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
    volumes:
      logvolume01: {}

原文由 code-8 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题