我在nginx上有一个magento部署,它使用持久卷和持久卷声明。一切正常,但我正在努力解决一个问题。我正在使用 initContainer 通过 cli 安装 magento(工作正常),但是一旦我的 POD 启动并将 PVC 挂载到/var/www/html
(我的 webroot),之前(在 initContainer 中)安装的数据就会丢失(或者更好地替换为新挂载)。我的解决方法是将 magento 安装到/tmp/magento
中(在 initContainer 中),一旦"真正的"POD 启动,/tmp/magento
中的数据就会复制到/var/www/html
中。正如您可以想象的那样,这需要一段时间,并且是一种许可地狱,但它有效。
有什么方法可以直接在目标目录中安装我的应用程序,而不会"覆盖"我的文件?我必须使用 PV/PVC,因为我通过 NFS 挂载 POD 目录,而且我不想丢失我的文件。
更新:Magento部署位于docker映像中,并在docker构建期间安装。因此,如果我将数据安装到目标位置,kubernetes 挂载会将数据替换为空挂载。这是解决方法的主要原因。目标是将整个安装放在映像中。
如果Magento已经安装在图像中并通过某个路径(例如/tmp/magento
)定位,但您希望它可以通过路径/var/www/html/magento
访问,为什么不创建一个指向现有位置的符号链接?
因此,您的Magento将在映像构建过程中安装,并在入口点中安装一个附加命令
ln -s /tmp/magento /var/www/html/magento
将在 Nginx 服务器自行启动之前运行。不需要 intiContainers。