使用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