构建 docker 容器时在挂载卷上创建文件

Creating a file on a mounted volume while building a docker container

我试图在构建 docker 容器时创建一个文件,当我构建它时我没有收到任何错误并且文件似乎已正确写入,但是当我通过 ssh 进入容器时该文件不存在。

有什么想法吗?

你应该 运行 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 "

因为您是在构建映像后装载卷。

卷安装适用于 运行 时间,而不是在构建期间。构建的输出是一个可移植的图像,而不是一个图像和一些您需要单独发送的持久数据。该文件应该存在于您的图像中,具体取决于您的 Dockerfile 的其余部分。

当您在 运行 时挂载主机卷时,构建映像中的任何内容都会被主机挂载隐藏。您只能看到主机中存在的文件(以及权限、uid 和 gid)。

但是,如果您切换到命名卷,docker 将在 new/empty 时使用该位置的图像内容初始化该卷。