我正在尝试在构建docker容器时创建一个文件,当我构建它时,我没有收到任何错误,并且似乎文件已正确写入,但是当我将其ssh到容器中时,文件不存在。
我通过在RUN echo "Some line to add to a file" >> /var/www/public/text.txt
Dockerfile
来写文件
我的docker-compose.yml
如下:
version: '2'
services:
web:
build: web/
ports:
- "8080:80"
volumes:
- ./web/:/var/www/
env_file:
- web/.env
我执行docker-compose up --build
docker exec -it <container id> bash
cd
到文件夹/var/www/public
,文件text.txt
不存在有什么想法吗?
答案 0 :(得分:1)
卷装载在运行时应用,而不是在构建期间应用。构建的输出是一个可移植的映像,而不是映像和一些需要单独运送的持久性数据。该文件应存在于映像中,具体取决于Dockerfile的其余部分。
在运行时挂载主机卷时,主机挂载会隐藏内置映像中的所有内容。您只能看到主机中存在的文件(以及权限,uid和gid)。
但是,如果切换到命名卷,则docker将在该卷为新卷/空卷时使用该位置的图像内容初始化该卷。
答案 1 :(得分:0)
您应该在docker-compose.yml文件中运行命令- 版本:“ 2”
services:
web:
build: web/
ports:
- "8080:80"
volumes:
- ./web/:/var/www/
env_file:
- web/.env
command:"echo "Some line to add to a file" >> /var/www/public/text.txt "
由于要在构建映像后装入卷。