撰写文件 Docker 中的模板语法

Iva*_*rin 1 service templates docker

我们可以在 Docker 撰写文件 YML 中使用模板吗?

例如,我想要部署带有复制的服务,并且我想要为容器设置名称,例如:-servicename-_-replicId-

ges*_*lix 7

简短的回答:是的,在其上下文中称为插值变量替换: https ://docs.docker.com/compose/compose-file/#variable-substitution

更多细节:您可以从环境变量中插入变量值,但也可以提供默认值,以防环境不包含必要的变量。

从官方文档中获取的示例如下所示:

db:
  image: "postgres:${POSTGRES_VERSION}"
Run Code Online (Sandbox Code Playgroud)

现在考虑命名容器的实际用例:容器名称源于变量key而不是变量value。因此,您必须使用该container_name属性来显式覆盖生成的容器名称。请参阅上面的示例:db将是生成的容器名称,但db不是属性值。因此,为了使您的用例发挥作用,您应该尝试以下操作:

db:
  container_name: "app_${CONTAINER_NAME_SUFFIX}"
Run Code Online (Sandbox Code Playgroud)