Я хотел бы обновить очень старую установку WordPress. Я хотел бы воспроизвести живую среду локально. Для этого я бы построил свой PHP, MySQL через docker compose. Однако у меня есть проблема с этим. Обычно для этого вы берете готовые изображения WordPress. Но в моем случае я не могу этого сделать, потому что версия WP не поддерживается в докер-хабе или где-либо еще. По этой причине я бы построил свой docker-compose со следующими изображениями: php7.0, apache и MySql. Однако мне интересно, как включить модули PHP, которые нужны Wordpress, в мой файл yaml. Есть ли шаблон, которому я могу следовать? И правильный ли способ, который я выбираю здесь, или есть альтернативный путь?
Образы Docker состоят из слоев. Вы можете взять PHP-образ из Docker Hub и добавить на него. На самом деле официальный образ Wordpress использует официальный образ PHP в качестве основы.
Создайте новый Dockerfile.
Вы можете выбрать вариант PHP 7 в качестве стартовой базы:
FROM php:7.0-apache
Для некоторых расширений, таких как GD Library (используется для создания миниатюр), вам необходимо установить некоторые зависимости. Этот образ основан на Debian Linux, поэтому вы используете:
RUN apt-get -y update && apt-get -y install libfreetype6-dev libjpeg62-turbo-dev libpng-dev unzip
Затем вам понадобятся некоторые расширения PHP, такие как вышеупомянутая библиотека GD и MYSQLi. В официальном образе PHP есть утилита (см. «Как установить больше расширений PHP»), которая делает это очень просто:
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install mysqli gd exif zip
Теперь вы можете создать свой образ:
docker build -t mycustomphpimage:latest .
И запустите его:
docker run mycustomphpimage:latest
Автоматическое создание образа с помощью CI/CD в Gitlab/Github и развертывание пользовательских образов в репозиторий для загрузки на сервер выходит за рамки этого ответа.
Вы можете просто создать образ на самом сервере при развертывании. Если вы не хотите этого делать, вы также можете создать образ локально и использовать docker export
и docker import
.
Образ Wordpress для Wordpress устанавливает некоторые расширения, самые критичные из них gd, exif
(изображения), zip
(распаковка плагинов), mysqli
(база данных). Попробуйте выяснить, что установлено на вашем текущем рабочем сервере, и добавьте их в Dockerfile — многие из них будут «просто работать» с docker-php-ext-install
, а некоторые можно игнорировать.
Также можно использовать старую версию изображения Wordpress 5.0 или использовать его в качестве основы (FROM wordpress:5-php7.0-apache
).
Вы упомянули, что хотели бы сделать это для обновления старой установки, поэтому следующее неприменимо к вам, но для тех, кто найдет этот ответ в будущем: просто потому, что вы можете запускать старые версии PHP/Wordpress, пожалуйста, не делайте этого в продакшене и постарайтесь обновиться как можно скорее.