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

标签 docker docker-compose

quickstart: Compose and Django docker-compose 文档中的页面,都是 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根据我是在创建生产堆栈还是开发堆栈,是附加卷还是不附加卷?

最佳答案

发布这个问题几分钟后,我发现了一个页面,上面有一些关于如何做到这一点的提示。这是我认为必须完成的方式:

  • 您定义了一个 docker-compose.yml附加卷。但是,在您的 Dockerfile你还保留着原来的ADDCOPY操作说明。
  • 您还定义了一个 production.yml不包含开发和生产系统之间的相似之处的文件。但是,它确实包括您要在生产环境中进行的更改。例如,volumes部分可能是这样的:
    volumes: {}

  • 现在,当你运行 docker-compose在生产中,你这样做:
    $ docker-compose -f docker-compose.yml -f production.yml up
    这是Using Compose in Production的链接以供引用。

    关于docker - 如何仅在开发环境中使用 docker-compose 附加卷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36956915/

    相关文章:

    docker - 是否可以在 docker 镜像的 BUILD 阶段在主机上安装卷?

    java - 为什么 OpenJDK 8 在使用 Docker 时没有提取正确的 JavaFX 库?

    docker - 如何解释这个 docker 注册表创建命令?

    docker - 来自 docker-compose.yml 入口点中 env 文件的环境变量

    amazon-ec2 - AWS BeansTalk 公开 docker 端口

    docker - 节点无法加入 Swarm 集群

    docker - 尝试docker-compose up命令时出错

    database - 如何防止数据库docker被重建而丢失生产数据

    java -/etc/timezone 在 anapsix/alpine-java :8_server-jre docker image 上不存在

    docker - 无法使用IP访问Docker数据库(仅本地主机)