Заявление на постоянный том Kubernetes по проблеме / var / www / html

У меня есть развертывание Magento на nginx, которое использует постоянный том и утверждение постоянного тома. Все работает нормально, но борюсь с одной проблемой. Я использую initContainer для установки magento через cli (который отлично работает), но как только мой POD запускается и монтирует PVC в /var/www/html (мой webroot), данные, ранее установленные (в initContainer), теряются (или лучше заменяются на новое крепление). Моим обходным решением было установить magento в /tmp/magento (в initContainer), и как только «настоящий» POD будет запущен, данные из /tmp/magento будут скопированы в /var/www/html. Как вы понимаете, это требует времени и является своего рода адом разрешений, но это работает.

Есть ли способ установить приложение прямо в целевой каталог, не перекрывая мои файлы? Мне нужно использовать PV / PVC, потому что я монтирую каталог POD через NFS, а также не хочу терять свои файлы.

Обновление: развертывание Magento находится внутри образа докера и устанавливается во время сборки докера. Поэтому, если я устанавливаю данные в целевое местоположение, монтирование кубернетов заменяет данные пустым монтированием. Это основная причина обходного пути. Цель состоит в том, чтобы вся установка находилась внутри изображения.


person Jake    schedule 14.06.2019    source источник
comment
Том монтируется до запуска initContainer, и оба, main и initContainer, используют один и тот же том, если он подключен к обоим из них. Для меня поведение, которое вы описываете, не имеет смысла.   -  person WindyFields    schedule 15.06.2019
comment
@WindyField Я только что обновил свой вопрос. Я вроде забыл важную вещь.   -  person Jake    schedule 15.06.2019


Ответы (1)


Если Magento уже установлен внутри образа и расположен по некоторому пути (скажем, /tmp/magento), но вы хотите, чтобы он был доступен по пути /var/www/html/magento, почему бы вам просто не создать символическую ссылку, указывающую на существующее местоположение?

Таким образом, ваш Magento будет установлен во время процесса сборки образа, а в точке входа - дополнительная команда

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

будет запущен до того, как сервер Nginx запустится. Нет необходимости в контейнерах intiContainers.

person WindyFields    schedule 15.06.2019