2016-01-29 15 views
7

我有一個docker-compose.yml文件,並在終端我typing docker-compose up [something]但我也想通過一個參數docker-compose.yml。這可能嗎?我讀過有關插值變量和嘗試使用${testval}然後docker-compose up [something] var="test"指定在.yml文件中的變量,但我收到以下錯誤:我如何通過一個參數與碼頭一起構成

WARNING: The testval variable is not set. Defaulting to a blank string.
ERROR: No such service: testval=test

回答

2

docker-compose不包括爲了傳遞參數的任何標誌或命令。

撰寫主要是一個運行服務,而不是建立圖像的工具。 嘗試將每個dockerfile中定義的ARG用於參數。

由於docker-compose不是爲此目的而設計的,因此無法支持每個獨特的構建方案。你只能真正支持最常見的構建方案。

你可以看到更多的信息關於他的話題here

5

你需要通過變量作爲環境變量:

testvar=test docker-compose up ... 

export testvar=test 
docker-compose up 
2

我不知道你想在這裏做什麼,但如果你需要的是一個傳遞到特定的容器碼頭工人,compose.yml環境變量允許你這樣做:

web: 
    ... 
    environment: 
    - RAILS_ENV=production 
    - VIRTUAL_HOST=www.example.com 
    - VIRTUAL_PORT=3011 

這個變量將特定於您指定的容器,並且不會在容器之間共享。

此外,「docker-compose up」不會引用任何參數。

7

基於dnephin answer,我創建了這個sample repo,您可以將一個變量傳遞給docker-compose up。

用法很簡單:

MAC/LINUX
  • TEST= docker-compose up創建並同時啓動appdb容器。然後該API應該在端口3030上的docker守護程序上運行。
  • TEST=DO docker-compose up創建並啓動容器的兩個app和。該API應執行package.json文件中的npm run test
WINDOWS(Powershell的)
  • $env:TEST="";docker-compose up創建並同時啓動appdb容器。然後該API應該在端口3030上的docker守護程序上運行。
  • $env:TEST="do";docker-compose up創建並啓動容器的兩個app和。該API應執行package.json文件中的npm run test
相關問題