2017-08-26 61 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,...)或如何查找更多信息? –