Wordpress Dockerfile-触摸容器路径处的文件

Wordpress Dockerfile-触摸容器路径处的文件,wordpress,docker,docker-compose,wordpress-theming,dockerfile,Wordpress,Docker,Docker Compose,Wordpress Theming,Dockerfile,docker compose.yml文件: web: build: ./code ports: - "80:80" volumes: - ./mount:/var/www/html /code中的dockerfile: FROM wordpress WORKDIR /var/www/html RUN touch test.txt 这是我用来建立一个简单WordPress博客的生产环境(为了简单起见,docker-compose.yml和Dockerfile中省略

docker compose.yml文件:

web:
  build: ./code
  ports:
    - "80:80"
  volumes:
    - ./mount:/var/www/html
/code
中的dockerfile

FROM wordpress
WORKDIR /var/www/html
RUN touch test.txt

这是我用来建立一个简单WordPress博客的生产环境(为了简单起见,docker-compose.yml和Dockerfile中省略了其他服务)

以下是我正在做的:

  • 将装载主机目录绑定到容器目标
    /var/www/html
  • 在构建期间创建
    test.txt
    文件
什么不起作用:

  • 当我在容器上检查
    /www/var/html
    时,我没有找到我的
    test.txt
    文件
我所做的理解:

  • 绑定装载发生在运行时
  • 在这种情况下,会创建文件,但在装载主机目录时,Dockerfile中的命令会被覆盖
  • 使用卷装载时,它可以工作
我不明白的是:

  • 您可以通过什么方式将最新代码放入使用绑定装载来持久化数据的容器中
  • 如何创建一个脚本,让我在运行时实现这一点
  • 考虑到我必须使用绑定装载(AWS ECS仅在使用卷的主机目录路径时才会持久化数据),我还可以如何实现这一点

您的数据将在运行时持久化。运行时存储在
/var/www/html
中的所有内容都将保存在主机
/mount
目录中

在构建时,一切都发生在容器映像内的docker层

如果您想在创建脚本之前先执行操作,
将它添加到图像中,并在容器启动时使用
CMD
ENTRYPOINT
运行脚本

总之
  • 您可以通过什么方式将最新代码放入使用绑定装载来持久化数据的容器中
您可以将最新代码添加到映像(即git克隆、复制、添加或适合您的内容)。容器不应该是可变的,因此您需要控制代码的版本,并定义持久化文件夹(例如,用于上载)

  • 如何创建一个脚本,让我在运行时实现这一点
如果要在运行时执行此操作,请将shell脚本添加到映像中,然后运行它。尽管如此,这并不是这个用例的最佳方法

  • 考虑到我必须使用绑定装载(AWS ECS仅在使用卷的主机目录路径时才会持久化数据),我还可以如何实现这一点

嗯,你应该用你的图像来构建你的代码。您的映像不应该是可变的,并且必须反映代码生命周期中的实例。用数据定义路径,这些路径将成为主机级别的挂载。

那么为什么在这种特殊情况下“test.txt”不会持久化呢?您可以检查并找到它的答案。