Docker:以非持久方式在容器之间共享数据以允许代码升级

Soe*_*ren 5 php nginx docker docker-compose docker-volume

在php-fpm和nginx容器设置中,通常两个容器都需要源代码。就我而言,我想将Magento码头化。在Magento中,nginx的配置方式是在将请求提交给php引擎之前先查找文件是否存在。

根据Docker在生产环境中的最佳实践,我在构建过程中将源代码复制到php容器中。与Nginx容器共享源代码的第一个想法是使用安装在两个容器根目录上的命名卷。但是,即使在编辑源代码并重建php容器之后,命名卷中的数据仍然存在。这对于动态内容(如文件上传等)非常方便,但是如何升级源代码?每次更改源代码时都应该删除该卷吗?在这种情况下,如何保存动态内容?

简而言之:

  • 我想让非持久卷在php和nginx之间共享源代码
  • 具有动态内容(例如文件上传)的文件夹的永久卷(但仍与nginx共享)

对于Magento来说,将是:

  • 文件和文件夹等非持久体积./index.php./vendor/./app/(除了./app/etc/env.php./app/etc/config.php因为是配置文件)等。
  • 持久卷文件和文件夹一样./pub/media/./app/etc/env.php./app/etc/config.php,等。