+-
使用Docker Compose将文件复制到容器
我有一个Dockerfile,我将现有目录(包含内容)复制到容器,工作正常:

Dockerfile

FROM php:7.0-apache
COPY Frontend/ /var/www/html/aw3somevideo/
COPY Frontend/ /var/www/html/

RUN ls -al /var/www/html
RUN chown -R www-data:www-data /var/www/html 
RUN chmod -R 755 /var/www/html 

Screenshot of directory listing with docker exec

但是当我使用docker-compose.yml文件时,只有目录aw3somevideo并且在aw3somevideo里面什么也没有.

泊坞窗,compose.yml:

 php:
    build: php/
    volumes:
      - ./Frontend/ :/var/www/html/
      - ./Frontend/index.php :/var/www/html/
    ports:
      - 8100:80

Screenshot of empty directory listing

也许我不理解卷的功能,如果是这种情况,请告诉我如何通过docker-compose.yml文件将我现有的文件复制到容器中.

最佳答案
2017年4月更新

自从我写完原始答案以来,这种行为发生了变化.现在一致的是,右侧是指定像myvolume这样的命名卷还是像/ var / lib / myapp那样指定主机上的路径.
例如

    volumes:
      - /dir/on/host:/var/www/html

如果/ dir / on / host不存在,则在主机上创建它,并将空内容安装在/ var / www / html的容器中.无论在/ var / www / html之前是什么都无法访问.

—-老答案———–

docker-compose中的volume:部分将覆盖/ var / www / html目录中的任何内容.

主要有两种情况:

>卷存在

在这种情况下,卷的内容会掩盖dst目录中的任何内容.

例如:

volumes:
  - /dir/on/host:/var/www/html

>卷不存在

如果myvolume不存在(例如命名卷),/ var / www / html的内容将在第一次复制到卷

volumes:
  - myvolume:/var/www/html

在案例2中,如果您尝试在某个容器上再次安装相同的卷,则它将遵循案例1.

    volumes:
      - myvolume:/var/www/html

在这种情况下(假设myvolume已经创建),/ var / ww / html的内容将被myvolume中的任何内容覆盖(阴影).

官方文档详细介绍了https://docs.docker.com/compose/compose-file/#/volumes-volume-driver

点击查看更多相关文章

转载注明原文:使用Docker Compose将文件复制到容器 - 乐贴网