2017-06-08 35 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