Docker组成variables

我有一个docker撰写的问题,我想使用内部conainervariables来创build另一个variables:

myapp: image: image depends_on: - anotherimage environment: - "VAR1=var1" - "VAR2=${HOSTNAME}_${VAR1}" 

我在VAR2中得到的是Docker引擎主机的主机名,而对于VAR1则没有

我想有这样的东西:

 39ed52c98e92_var1 

Docker-compose从运行docker-compose命令的环境中parsing组合文件中的variables,而不是从容器内部parsing。 如果您想从容器内部configuration您的环境,则需要将其添加到容器运行的命令或入口点。 如果您还没有入口点,则可以创build一个:

 #!/bin/sh export VAR2=${HOSTNAME}_${VAR1} exec "$@" 

要使用它,你的Dockerfile会有两行额外的代码:

 COPY entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] 

运行docker build之前,请确保chmod 755 entrypoint.sh


编辑:VAR1不解决你的XML里面是一个类似的问题。 每个variables都由容器的docker-compose定义,但不会更改docker-compose正在使用的主机上的环境。 所以你不能在yml的后面的行上使用这个variables。