2016-04-28 34 views
2

我使用docker爲開發和生產環境。合併Dockerfiles構建

目前,我有兩個Dockerfile

dev.dockerfile

FROM image:latest 

[common code in dev and production, e.g. : RUN apt-get install php5] 

prod.dockerfile

FROM image:latest 

[common code in dev and production, e.g. : RUN apt-get install php5] 

[code only used in production, e.g. : RUN docker-php-ext-install opcache] 

我想是要合併的通用代碼到一個文件common.dockerfile,然後能夠建立我的開發或生產圖像與運行只有一個docker命令。

你有什麼想法如何實現這一目標?

回答

3

督促建設時設置的環境變量。除非設置變量,否則讓prod RUN語句成爲noop。

+0

這是一個很好的答案,完全可以完成這項工作。對此遲到的批准抱歉:) –

1

我建議從開發圖像繼承生產的圖像,例如:

dev.dockerfile保持不變,並prod.dockerfile看起來像:

FROM <dev_image_name_and_tag> 

[code only used in production, e.g. : RUN docker-php-ext-install opcache] 
+0

我將不得不運行兩個'docker build'命令,是不是?如果我可以做一些像'FROM common.dockerfile'這樣的東西,然後'docker build'會生成兩個圖像,那將是非常好的。 –

+0

嗯,我不認爲這是可能的。使用我的方法,您的圖像也將更快地構建,因爲常見的軟件包將只在開發映像中安裝一次。 – jazgot

+1

另請參閱https://github.com/docker/docker/issues/735。 – Rick