gpt4 book ai didi

docker - 如何在 docker compose override 中重命名服务?

转载 作者:行者123 更新时间:2023-12-05 02:55:20 24 4
gpt4 key购买 nike

假设我有几个服务 web1web2 我可以在生产或开发中启动它们

docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

现在假设我对测试配置执行相同的操作。如果我的测试 yml 仅更改容器名称,例如,

version: '3.6'
services:
web1:
container_name: web1_test
web2:
container_name: web2_test

我的网络服务已经在运行,然后这将重新创建服务,有效地用带有新配置(在本例中为新名称)的新容器替换它们的容器。但我宁愿不这样做,在不干扰原件的情况下上下旋转它们会很好。

更好的体验会是

version: '3.6'
services:
web1:
service_name: web1_test
web2:
service_name: web2_test

然后我可以启动测试版本并在不触及原始版本的情况下停止它们。

docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d web1_test web2_test

有什么方法可以保留原始服务并使用简单的配置覆盖启动一些新的测试实例吗?


注意:我目前正在使用 docker-compose run 来满足我的需求。在实践中,我还像这样修改环境变量和端口:

docker-compose -f Docker/docker-compose.yml -f Docker/docker-compose.dev.yml run -d --name web1_test -e VAR1=web1_test_var -p 5001:5000 web1

所以我已经知道“如何完成它”,我正在寻找更多,我是否缺少更好的方法来完成同样的事情?在配置中包含端口、环境和名称的东西会很好,不是吗?

最佳答案

您可以为同一 docker-compose.yml 使用不同的项目名称,而不是为每个服务使用 container_name 使用标志:-p, --project -name NAME.

docker-compose -f docker-compose.yml -p foo up -d
foo_web_1
foo_web_2

docker-compose -f docker-compose.yml -p bar up -d
bar_web_1
bar_web_2

关于docker - 如何在 docker compose override 中重命名服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61345448/

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