2

大家好,我处于这种情况,我想通过重建包含用于传输卷中源的 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:
4

1 回答 1

4

命名卷webroot旨在跨容器重新启动/重建保留数据。唯一一次从映像更新卷中的数据是在创建卷时,并复制映像中目录的内容。

看起来你的意思是使用volumes_fromwhich 是你如何让容器挂载定义在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

请注意,这已在 compose 文件的版本 3 中被替换,因此如果您想使用更新的功能,您可能需要坚持重新创建卷。

于 2017-03-16T13:35:50.993 回答