Docker Compose – 使用容器环境variables的命令
使用Docker Compose将主服务和从服务连接在一起。 从属容器因此通过Compose自动注入包含连接到另一个主容器所需的各种端口和IP的环境variables。
该服务通过命令行参数接受主站的IP /端口,所以我将其设置在我的commands
。
master: command: myservice ports: - '29015' slave: command: myservice --master ${MASTER_PORT_29015_TCP_ADDR}:${MASTER_PORT_29015_TCP_PORT} links: - master:master
问题是,当运行compose命令时,会评估像MASTER_PORT_29015_TCP_PORT
这样的环境variables,而不是在实际设置它们的容器本身内。
在启动群集时,会看到以下警告: WARNING: The MASTER_PORT_29015_TCP_ADDR variable is not set. Defaulting to a blank string.
WARNING: The MASTER_PORT_29015_TCP_ADDR variable is not set. Defaulting to a blank string.
我尝试设置entrypoint: ["/bin/sh", "-c"]
但产生exception的行为,服务根本看不到任何variables。 (有关信息,我实际使用的服务是RethinkDB)。
如文档中所述 ,链接环境variables现在是不鼓励的,您应该只写master
而不是$MASTER_PORT_29015_TCP_ADDR
。 而且,当你知道它的值将是29015时,写入$MASTER_PORT_29015_TCP_PORT
似乎没有任何意义。
因此,将命令更改为:
myservice --master master:29015