docker-compose——仅在开发中绑定挂载卷

问题描述 投票:0回答:2

我有一个这样的

docker-compose.yml

version: '2'
services:
  backend:
    build:
      context: .
    volumes:
      - .:/home/ll/stuff
    ports:
      - '8000:80'

这总是会增加数量,这对开发有好处,但对生产不利。有没有办法“告诉”

docker-compose
仅在开发过程中安装该卷,或者换句话说,如果
APP_ENV
为空或
==development

我需要为此创建另一个撰写文件吗?如果是这样,我可以使用生产文件中的配置,而不重复不改变的内容吗?

docker-compose
2个回答
5
投票

来自官方文档:修改您的撰写文件以进行生产

考虑定义一个额外的 Compose 文件,例如 production.yml,它指定适合生产的配置。此配置文件只需包含您想要对原始 Compose 文件进行的更改。附加的 Compose 文件可以应用于原始的 docker-compose.yml 以创建新的配置。

获得第二个配置文件后,告诉 Compose 通过 -f 选项使用它:

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

它应该可以解决问题!


0
投票

1.创建三个文件

创建一个通用基础文件,用于生产和开发:

docker-compose.yml

创建另一个用于开发的文件

docker-compose.development.yml
,用于扩展合并基础文件。

创建第三个用于生产的文件

docker-compose.production.yml
,用于扩展或合并基本文件。

2.运行 docker compose

生产合并这两个文件:

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

开发合并这两个文件:

docker compose -f docker-compose.yml -f docker-compose.development.yml up -d

这样,开发设置最终投入生产的风险就会小得多,反之亦然。


更多信息

很棒的合并示例在这里:

https://docs.docker.com/compose/multiple-compose-files/merge/#example

除了扩展和合并之外,还有第三种选择,include:

https://docs.docker.com/compose/multiple-compose-files/include/

© www.soinside.com 2019 - 2024. All rights reserved.