我有一个$results
,我将现有目录(包含内容)复制到容器中,工作正常:
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
内没有任何内容。
搬运工-compose.yml :
aw3somevideo
也许我不理解 php:
build: php/
volumes:
- ./Frontend/ :/var/www/html/
- ./Frontend/index.php :/var/www/html/
ports:
- 8100:80
的功能,如果是这种情况,请告诉我如何通过volumes
文件将现有文件复制到容器中。
答案 0 :(得分:39)
2017年4月更新
自从我写完原始答案以来,行为发生了变化。现在一致的是,右侧是指定myvolume
之类的命名卷还是主机上的路径,如/var/lib/myapp
。
例如
volumes:
- /dir/on/host:/var/www/html
如果/dir/on/host
不存在,则在主机上创建,并在/var/www/html
的容器中装入空内容。无论以前/var/www/html
中的任何内容都无法访问。
----老答案-----------
docker-compose中的volumes:
部分会覆盖/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
答案 1 :(得分:0)
在 Dockerfile 上将 COPY 更改为 ADD。这是复制目录而不是文件的方式