2017-03-16 125 views
0

嗨,大家好我在這種情況下,我想通過重建包含COPY命令的數據容器在源代碼中部署這些更改。但是,當我重建數據鏡像並重新運行docker-compose時,我堅持使用舊代碼,更新所有內容的唯一方法是刪除webroot卷並重新創建它。從數據容器更新共享卷

錯誤在哪裏?

server: 
    build: ./docker/apache 
    image: server:1.3.16 
    restart: always 
    links: 
    - fpm 
    ports: 
    - 80:80 # HTTP 
    - 443:443 # HTTPS 
    volumes: 
    - webroot:/var/www/html:ro 

fpm: 
    build: ./docker/php 
    image: fpm:1.0 
    restart: always 
    links: 
    - database 
    volumes: 
    - webroot:/var/www/html 

data: 
    build: 
    context: . 
    dockerfile: dataDockerFile 
    image: smanapp/data:1.0.0 
    volumes: 
    - webroot:/var/www/html 

volumes: 
    webroot: 

回答

1

命名卷webroot是爲了堅持跨容器重新啓動數據/重建。卷中的數據從映像更新的唯一時間是卷的創建時間,並且映像中的目錄內容被複制。

看起來您的意思是使用volumes_from這就是您如何獲取容器來裝載在data上定義的卷。這是分享卷旨在取代的數據的原始「數據容器」方法。

version: "2.1" 

services: 

    server: 
    image: busybox 
    volumes_from: 
     - data 
    command: ls -l /var/www/html 

    fpm: 
    image: busybox 
    volumes_from: 
     - data 
    command: ls -l /var/www/html 

    data: 
    build: . 
    image: dply/data 
    volumes: 
     - /var/www/html 

請注意,這已經replaced in version 3 of the compose file所以你可能需要堅持,如果你想使用較新的功能重新創建卷。

+0

不幸的是,沒有辦法在碼頭自動強制音量重新組合。我想我會改變我的撰寫文件版本到2.1。 –