2017-06-08 91 views
2

我有一个码头工人撰写的一个问题,我想用内部conainer变量创建另一个另一个变量:泊坞窗组成变量

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

我在VAR2得到什么泊坞窗引擎主机并没有什么的主机名VAR1

我想有这样的:

39ed52c98e92_var1 

回答

1

泊坞窗,撰写解决了从环境中撰写文件中的变量在运行该docker-compose命令,而不是从容器内部。如果你想从容器内部配置你的环境,你需要将它添加到容器运行的命令或入口点。如果你不已经有一个入口点,你可以创建一个为:

#!/bin/sh 

export VAR2=${HOSTNAME}_${VAR1} 
exec "[email protected]" 

要使用,你Dockerfile将不得不两个额外的线路:

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

确保chmod 755 entrypoint.sh运行前的docker build


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

+0

这将改变HOSTNAME的来源。在问题HOSTNAME是码头主机。但是,在您的entrypoint.sh中,它将解析为容器的主机名。不是吗? – Robert

+0

@Robert我相信这个问题说他们在他们的变量中获得了docker主机,他们想要容器主机名。 – BMitch

+0

看到这部分'和VAR1'没有。问题是在'environment:'VAR1没有定义(env定义中没有顺序)。你懂我的意思吗? – Robert