Docker Compose – 使用容器环境变量的命令

使用Docker Compose将主服务和从服务链接在一起.因此,Compose通过环境变量自动注入从属容器,该环境变量包含连接到另一个主容器所需的各种端口和IP.

该服务通过命令行参数接受主服务器的IP /端口,因此我在命令中设置了它.

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这样的环境变量,而不是在实际设置它们的容器本身内.

启动集群时 – 您会看到警告:警告:未设置MASTER_PORT_29015_TCP_ADDR变量.默认为空字符串.

我尝试设置入口点:[“/ bin / sh”,“ – c”]但产生了异常行为,其中服务根本看不到任何变量. (有关信息,我实际使用的服务是RethinkDB).

最佳答案
As stated in the documentation,现在不鼓励链接环境变量,你应该只写master而不是$MASTER_PORT_29015_TCP_ADDR.此外,当你知道它的值为29015时,似乎没有任何意义来编写$MASTER_PORT_29015_TCP_PORT.

因此,将命令更改为:

myservice --master master:29015
点赞