如何仅在开发环境中使用 docker-compose 附加卷?

How can I attach volumes with docker-compose only when in the development environment?

在 docker-compose 文档的 quickstart: Compose and Django 页面中,Dockerfiledocker-compose.yml 文件都将 . 添加为 /code ,像这样:

ADD . /code/

几行之后:

web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code

我猜这样做是为了在开发过程中,您不必经常重建映像,而在使用 docker build 时,映像是使用内部已有的源代码构建的,因此在生产中,您可以简单地执行 docker run 来启动容器。对吗?

如果是这样,问题是,我如何创建一个 docker-compose.yml 来根据我创建的是生产堆栈还是开发堆栈来附加卷或不附加卷?

发布此问题几分钟后,我看到了一个页面,其中包含一些关于如何执行此操作的提示。这是我认为必须完成的方式:

  1. 您定义一个附加卷的 docker-compose.yml。但是,在您的 Dockerfile 中,您仍然保留原始的 ADDCOPY 指令。
  2. 您还定义了一个 production.yml 文件,其中不包含您的开发系统和生产系统之间的相似之处。但是,它确实包括您要在生产环境中进行的更改。例如,volumes 部分可能是这样的:

    volumes: {}

现在,当您 运行 docker-compose 在生产中时,您可以这样做:

$ docker-compose -f docker-compose.yml -f production.yml up

这里是link到Using Compose in Production供参考。