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