2016-08-03 52 views
1

我有幾個容器,我和docker-compose一起運行。 其中之一是mysql,它需要設置一些變量。我有一個.env文件:如何在泊塢窗上設置多個指向相同值的env變量?

MYSQL_USER='my_user' 
MYSQL_PASSWORD='my_password' 
MYSQL_ROOT_PASSWORD='supersecretpassword' 
MYSQL_DATABASE='my_database' 

而且我能夠成功地啓動mysql容器。

問題是當我想要使用的數據庫遷移,這需要在.env文件中設置以下變量的另一個服務:

SERVICE_DBUSER='my_user' 
SERVICE_DBPASSWORD='my_password' 
SERVICE_DBNAME='my_database' 

而我還想寫(這不起作用),爲避免重複,是這樣的:

SERVICE_DBUSER="$MYSQL_USER" 
SERVICE_DBPASSWORD="$MYSQL_PASSWORD" 
SERVICE_DBNAME="$MYSQL_DATABASE" 

但碼頭工人不承認和不執行替換。在docker docs中,它也表示expects each line in an env file to be in VAR=VAL format

我的問題是,是否有可能避免重複?

非常感謝。

回答

2

撰寫時將substitute environment variables納入YAML撰寫文件,當您使用$VARIABLE${VARIABLE}來引用它們時。您可以使用.env文件來設置默認環境。但是,當你想引用一個變量,把它放在撰寫YAML的environment:部分:

environment: 
    SERVICE_DBUSER: "${MYSQL_USER}" 
    SERVICE_DBPASSWORD: "${MYSQL_PASSWORD}" 
    SERVICE_DBNAME: "${MYSQL_DATABASE}" 

然後,如果你設置或運行docker-compose你會得到取代新的值時,源的備用環境

$ MYSQL_USER="other" MYSQL_PASSWORD="opass" docker-compose start