从数据容器更新共享卷

Update shared volume from data container

大家好,我遇到了这种情况,我想通过重建数据容器来部署我的源代码中的更改,该数据容器包含用于在卷中传输源的 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 旨在跨容器 restart/rebuilds 持久保存数据。唯一一次从映像更新卷中的数据是在创建卷时,并且复制了映像中目录的内容。

看起来您的意思是使用 volumes_from,这就是您让容器装载在 data 上定义的卷的方式。这是原始的 "data container" 共享数据的方法,卷旨在取代。

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 因此,如果您想使用更新的功能,您可能需要坚持重新创建卷。