使用Docker Compose將主服務和從服務連接在一起。從屬容器因此通過Compose自動注入包含連接到另一個主容器所需的各種端口和IP的環境變量。Docker Compose - 使用Container的命令環境變量
該服務通過命令行參數接受主設備的IP /端口,所以我將其設置在我的commands
中。
master:
command: myservice
ports:
- '29015'
slave:
command: myservice --master ${MASTER_PORT_29015_TCP_ADDR}:${MASTER_PORT_29015_TCP_PORT}
links:
- master:master
的問題是,當撰寫命令運行,而不是從容器本身,他們實際上是設置內像MASTER_PORT_29015_TCP_PORT
環境變量進行評估。
當啓動羣集 - 您看到這些警告:WARNING: The MASTER_PORT_29015_TCP_ADDR variable is not set. Defaulting to a blank string.
我試着設置entrypoint: ["/bin/sh", "-c"]
但產生的異常行爲,其中的服務將不會看到任何變量都沒有。 (有關信息,我實際使用的服務是RethinkDB)。
點上@jwodder。解決了主/從連接問題,但仍然很好解決環境變量的基礎用法,例如,可以給從屬設備命名,例如設置一個參數以使用容器主機名。 '--name $ {hostname}'仍然不起作用,例如,從服務器只生成隨機ID名稱,因此無法計算回其容器。 – simbolo
@simbolo您是否曾嘗試在反引號中使用主機名 - 內容會在運行時進行評估,例如, '--name \'主機名\'' – Jurgen