求解一个 docker-compose.yml 文件传参问题

2022-04-25 16:20:52 +08:00
 iblessyou
我应用的 docker-compose.yml 的文件,多个服务下需要配置一个 docker 内部的 host (看名字大家也知道是 kafka 的了),如下:
extra_hosts: ['kafka-192-146-113-39:192.146.113.39', 'kafka-192-146-113-40:192.146.113.40', 'kafka-192-146-113-43:192.146.113.43']

目的:
想把这些统一配置到一个地方,比如用外部配置文件引入参数给每个服务配置。

遇到问题和尝试:
使用 换行,每行一对的写法,可以使用 env 内的配置,但 kafka 随时可能增减。
所以写成了如上的数组写法,想着能不能把数组作为参数,而 env 好像不支持数组。

求教有解决办法没?自己试了各种写法了
897 次点击
所在节点    问与答
7 条回复
kaedeair
2022-04-25 16:32:27 +08:00
试试容器加载.env 文件,不同服务从里面取不同变量名?
iblessyou
2022-04-25 18:59:53 +08:00
@kaedeair

呃,你可能理解错我的意思了。
现在情况是这样,每个服务的配置是一样的
docker-compose.yml

services:
服务 1:
extra_hosts: ['kafka-192-146-113-39:192.146.113.39','kafka-192-146-113-43:192.146.113.43']
....

服务 2:
extra_hosts: ['kafka-192-146-113-39:192.146.113.39','kafka-192-146-113-43:192.146.113.43']
....

第一想法就是上面每个服务的配置都写成:
extra_hosts:${kafka_host}

然后 env 里定义:
kafka_host:['kafka-192-146-113-39:192.146.113.39','kafka-192-146-113-43:192.146.113.43']

从而实现统一配置。
但这样行不通。所以就想问问这块正确的写法到底是怎样的。

貌似大家晚上加班的很少啊,晚上人挺少的。
gogogo1203
2022-04-25 22:19:28 +08:00
iblessyou
2022-04-26 11:04:32 +08:00
@gogogo1203 呃,也不是,这个文章是管理多个 docker-compose.yml 文件。
我的问题是在一个 docker-compose.yml 中,有多个服务,有个相同的配置,想提取成变量参数。
gogogo1203
2022-04-26 12:03:35 +08:00
@iblessyou 读了几遍都读不懂你要问什么,https://docs.docker.com/compose/environment-variables/ 感觉就是一个读去 env variable 的事。 docker-compose version 不一样,方法也不一样
iblessyou
2022-04-26 13:21:32 +08:00
@gogogo1203 对,就是读 env 变量,读不了数组的问题。
我现在用的 2.0 版本,像 2 楼那样试,失败了。
现在就是不知道是写法不对,版本不支持,还是压根就不能解决。
gogogo1203
2022-04-26 14:05:05 +08:00
你网上搜 2 的方法吧,好像把两个融合在一起。 不行就改成 3.0

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/849186

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX