0

我在 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 挂载会将数据替换为空挂载。这是解决方法的主要原因。目标是让整个安装在图像中。

4

1 回答 1

1

如果 Magento 已经安装在映像中并通过某个路径(例如/tmp/magento)定位,但您希望它可以通过 path 访问/var/www/html/magento,为什么不创建一个指向现有位置的符号链接?

因此,您的 Magento 将在映像构建过程中安装,并在入口点中安装一个附加命令

ln -s /tmp/magento /var/www/html/magento

将在 Nginx 服务器启动之前运行。不需要 intiContainers。

于 2019-06-15T11:12:35.713 回答