2017-08-26 58 views

回答

1

簡短的回答:是的,這就是所謂的變量替換他們的上下文:https://docs.docker.com/compose/compose-file/#variable-substitution

更多的細節:你可以插入環境變量的變量值,但也可以提供默認值,以防環境不包含必要的變量。

從官方文檔中抽取的是這樣的:

db: 
    image: "postgres:${POSTGRES_VERSION}" 

現在關於您的實際使用情況來命名的容器:容器名從變量關鍵莖,而不是從一個變量。因此,您必須使用container_name屬性來明確覆蓋生成的容器名稱。請參閱上面的示例:db將是生成的容器名稱,但db不是屬性值。所以爲了讓你的用例能夠正常工作,你應該試試這個:

db: 
    container_name: "app_${CONTAINER_NAME_SUFFIX}" 
+0

是的,我們可以使用環境變量,這很有用。通過Go編程語言(https://golang.org/pkg/text/template/)存在使用模板語法的方法。一些信息:(https://docs.docker.com/engine/reference/commandline/service_create/#create-services-using-templates)(https://stackoverflow.com/questions/17157721/how-to-get- a-docker-containers-ip-address-from-the-host?rq = 1) –

+0

對不起,你沒有提到你想使用Golang模板語法。然後我的答案是:不,根據我理解的鏈接文檔,這是不可能的。 – gesellix

+0

我們在哪裏可以看到關於此模板格式的更多信息,層次結構(.Service.ID,.NetworkSettings.Networks,...)或如何查找更多信息? –