2016-02-08 64 views
2

我的工作流程分爲三個階段:如何在Docker中將VOLUME更改爲COPY?

  1. 發展
  2. 分期
  3. 生產

在所有三個平臺的泊塢窗配置幾乎一樣,除了1個差異。在開發中,我通過VOLUME安裝項目目錄,而不是通過COPY複製它。

現在我不知道什麼是更好的做法?

每個階段,像這樣

project/ 
    .docker 
     development 
      apache-php 
       Dockerfile 
       vhosts.conf 
      mariadb 
       Dockerfile 
     staging 
      apache-php 
       Dockerfile 
       vhosts.conf 
      mariadb 
       Dockerfile 
     etc. 

創建Dockerfile或以某種方式改變conditionaly到VOLUMECOPY,但我不知道這應該如何工作。

回答

0

使用繼承

創建一個不覆蓋COPY/VOLUME步驟,然後使dev亡,測試及生產Dockerfiles你的基地圖像上該基數的基礎圖像。

基地Dockerfile

FROM ubuntu:14.04 
RUN echo test >> /important.txt 

然後建立基本圖像,以便它可以由其他Dockerfiles引用:docker build -t baseimage .

開發Dockerfile

FROM myrepo:baseimage 
VOLUME someVolume 

構建並運行。

PROD Dockerfile

FROM myrepo:baseimage 
COPY src dest 

編譯和運行。

docke run -it -v ~/some.txt:/some/container/folder 
+0

謝謝您的回答:如果使用這樣的

有趣

卷將覆蓋conatiner文件。在這種情況下,基礎映像必須在系統上準備就緒。我不使用dockers倉庫。有沒有一種方法來指定一個本地Dockerfile或與上下文? – Aley

+0

據我所知:是的,你必須在本地建造一次。 – michaelbahr

+0

@michaelbahr「卷將覆蓋容器文件」 - 然後我假設如果基本映像已經包含複製步驟,它可以被稍後在構建中聲明的卷覆蓋?例如通過[Docker Compose卷](https://docs.docker.com/compose/compose-file/#/volumes-volumedriver)。 –

相關問題