+-
我有一个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
但是当我使用docker-compose.yml文件时,只有目录aw3somevideo并且在aw3somevideo里面什么也没有.
泊坞窗,compose.yml:
php:
build: php/
volumes:
- ./Frontend/ :/var/www/html/
- ./Frontend/index.php :/var/www/html/
ports:
- 8100:80
也许我不理解卷的功能,如果是这种情况,请告诉我如何通过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将文件复制到容器 - 乐贴网