从数据容器更新共享卷

问题描述:

嗨,大家好我在这种情况下,我想通过重建包含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: 

命名卷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。 –