我在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安装会将数据替换为空安装。这是解决方法的主要原因。目标是将整个安装包含在映像中。
答案 0 :(得分:1)
如果Magento已经安装在映像中并通过某个路径(例如/tmp/magento
)定位,但是您希望通过路径/var/www/html/magento
可以访问它,那么为什么不创建指向以下内容的符号链接呢?现有位置?
因此,您的Magento将在映像构建过程中安装,并在入口点附加一条命令
ln -s /tmp/magento /var/www/html/magento
将在Nginx服务器启动之前运行。不需要intiContainer。