V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
iblessyou
V2EX  ›  问与答

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

  •  
  •   iblessyou · 2022-04-25 16:20:52 +08:00 · 1008 次点击
    这是一个创建于 950 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我应用的 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 好像不支持数组。

    求教有解决办法没?自己试了各种写法了
    7 条回复    2022-04-26 14:05:05 +08:00
    kaedeair
        1
    kaedeair  
       2022-04-25 16:32:27 +08:00
    试试容器加载.env 文件,不同服务从里面取不同变量名?
    iblessyou
        2
    iblessyou  
    OP
       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']

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

    貌似大家晚上加班的很少啊,晚上人挺少的。
    iblessyou
        4
    iblessyou  
    OP
       2022-04-26 11:04:32 +08:00
    @gogogo1203 呃,也不是,这个文章是管理多个 docker-compose.yml 文件。
    我的问题是在一个 docker-compose.yml 中,有多个服务,有个相同的配置,想提取成变量参数。
    gogogo1203
        5
    gogogo1203  
       2022-04-26 12:03:35 +08:00
    @iblessyou 读了几遍都读不懂你要问什么,https://docs.docker.com/compose/environment-variables/ 感觉就是一个读去 env variable 的事。 docker-compose version 不一样,方法也不一样
    iblessyou
        6
    iblessyou  
    OP
       2022-04-26 13:21:32 +08:00
    @gogogo1203 对,就是读 env 变量,读不了数组的问题。
    我现在用的 2.0 版本,像 2 楼那样试,失败了。
    现在就是不知道是写法不对,版本不支持,还是压根就不能解决。
    gogogo1203
        7
    gogogo1203  
       2022-04-26 14:05:05 +08:00
    你网上搜 2 的方法吧,好像把两个融合在一起。 不行就改成 3.0
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2756 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 707ms · UTC 14:55 · PVG 22:55 · LAX 06:55 · JFK 09:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.