2015-04-03 45 views
1

我正在嘗試設置docker-compose項目名稱,或者可以在我的配置文件中引用它。有這些可能嗎?如何在docker-compose.yml中設置/獲取項目名稱

的原因,我問的是,我在下面this tutorial所以我結束了一個docker-container.yml文件讀取

web: 
    build: . 
    command: bundle exec rails s -p 3000 -b 0.0.0.0 
    ports: 
    - "3000:3000" 
    links: 
    - db 
    volumes: 
    - ".:/myapp" 
    volumes_from: 
    - bundle 

db: 
    image: mongo 
    ports: 
    - "27017" 

bundle: 
    image: myapp_web # <--- this is actually {$project_name}_web being hard-coded 
    command: echo Hello 
    volumes: 
    - /bundle 

由於image: myapp_web配置,如果項目名稱本身就是這隻會工作myapp。如果我正在處理一個名爲myapp的目錄,或者我使用了docker-compose -p myapp,這將是真實的。

但是,只要有人改變目錄名稱,就會崩潰。我想告訴碼頭合成使用自定義COMPOSE_PROJECT_NAME變量,而不必通過-p fancyname選項。

我想象的另一種方法是在yml文件中傳遞某種類型的_web,但我真的不確定這可以實現。

有什麼想法?

+0

這是僅用於引用現有圖像嗎?任何你爲什麼不能再'捆綁'生成'''的原因?其中一項服務('bundle'或'web')將首先建立。但是第二個版本應該是接近即時的,因爲它會被緩存。在這一點上,圖像ID也應該相同。 – 2015-04-03 15:56:52

+0

你說得對,那是我需要的。如果你在乎,你可以把它寫成答案,否則我會自己做。謝謝 ! – aherve 2015-04-05 15:14:14

回答

2

這只是一個基於我的初步評論的答案。

當從同一圖像構建多個服務時,通常再安裝一次就可以了。在這種情況下,bundle只能建立.。由於您只是再次構建web,因此它將被緩存(因此可以快速構建)並具有相同的圖像ID。

3

在Github上有一個relevant issue供Docker撰寫,你可能想看看。