gpt4 book ai didi

Docker-compose 从 env 文件中指定标签

转载 作者:行者123 更新时间:2023-12-02 18:21:17 24 4
gpt4 key购买 nike

我有 docker-compose.yml 如下所示:

version: '2'
services:

micro-service:
image: some/micro-service:${SERVICE_VERSION}
env_file:
- ../all-variables/${PROFILE}/micro_service.env
ports:
- "8085:8085"

我有两个文件: dev.envstage.env在哪里 SERVICE_VERSIONPROFILE被描述。

运行时有什么方法可以指定具体文件 docker-compose up默认情况下 docker-compose 采用 .env当前目录中的文件。

有没有办法覆盖它或其他解决方法?

最佳答案

正如评论中的答案中提到的那样,没有办法做到这一点,因为它直接编码到源 code 中。使用 .env .

但是,有几种方法可以获得类似的行为。

第一种方式在本地使用 docker-compose ,即使用 docker-compose override文件。

所以在你的情况下,你可以拥有你的基地 docker-compose.yml像这样的文件:

version: '2'
services:
micro-service:
image: some/micro-service:1.0.0
ports:
- "8085:8085"

然后你可以定义一个 docker-compose-dev.yml文件:
version: '2'
services:
micro-service:
image: some/micro-service:dev
env_file:
- ../all-variables/dev/micro_service.env

然后你可以运行以下命令
$ docker-compose up -f docker-compose.yml -f docker-compose-dev.yml up
如果你这样做, docker-compose-dev.yml 中的值将覆盖 docker-compose.yml 中的内容.所以不要使用图像 some/micro-service:1.0.0它将使用 docker-compose-dev.yml 中定义的图像.

第二种方法是使用 docker-app .这是 Docker 团队的一个新的实验性实用程序。

基本上你会创建一个 dockerapp看起来像这样的文件:
version: 0.0.1
name: app

---
version: '2'
services:
micro-service:
image: some/micro-service:${SERVICE_VERSION}
env_file:
- ../all-variables/${PROFILE}/micro_service.env
ports:
- "8085:8085"
---
SERVICE_VERSION: latest
PROFILE: default

那么如果你转换你的 .env文件到 .yml使用 docker-app 使用正确的变量渲染 compose 文件.
docker-app render -f dev.yml | docker-compose -f - up
希望这会有所帮助,我在使用 docker-compose 处理多个环境时遇到了类似的问题。

关于Docker-compose 从 env 文件中指定标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51967256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com