Docker, Wordpress · 6 min read · Oct 14, 2025
Dockerизация Wordpress с Nginx и PHP-FPM на Ubuntu 16.04
Docker-Compose — это инструмент командной строки для определения и управления многоконтейнерными Docker-контейнерами, как если бы это был один сервис. Compose написан на Python и может быть установлен с помощью команды Python pip. С помощью Compose мы можем запускать несколько Docker-контейнеров всего одной командой. Это позволяет вам создать контейнер как сервис, что отлично подходит для вашей среды разработки, тестирования и предварительного просмотра.
В этом руководстве я проведу вас шаг за шагом по использованию docker-compose. Мы развернем ‘Wordpress‘ с Nginx, MySQL и PHP-FPM. Каждый сервис имеет свой собственный контейнер, и мы будем использовать образы из реестра Docker Hub. Я покажу вам, как создавать контейнеры из образов Docker и управлять всеми контейнерами с помощью docker-compose.
Предварительные требования
- Ubuntu 16.04
- Привилегии root
Шаг 1 - Установка Docker
Мы начнем с нуля, установив Docker и Docker Compose вручную с помощью команды apt.
Перед тем как начать, обновите репозиторий Ubuntu и установите последние обновления:
sudo apt-get update
sudo apt-get upgradeПо умолчанию Docker доступен в репозитории Ubuntu, поэтому мы можем сразу продолжить установку:
sudo apt-get install -y docker.ioКогда установка завершится, запустите Docker и добавьте его в автозагрузку:
systemctl start docker
systemctl enable dockerТеперь протестируйте вашу установку Docker с помощью команды ниже:
docker run hello-worldВы увидите hello-world от Docker.
Шаг 2 - Установка Docker-Compose
Docker-compose — это скрипт, написанный на Python, он доступен в репозитории PyPI и может быть установлен с помощью python pip. Поэтому сначала нам нужно установить Python и python pip на нашу систему.
Установите Python и python-pip:
sudo apt-get install -y python python-pipЗатем установите docker-compose с помощью команды pip:
pip install docker-composeПодождите, пока процесс установки завершится. Затем проверьте установку с помощью команды docker-compose:
docker-compose -vВы получите версию docker-compose.
Шаг 3 - Настройка Wordpress
Теперь Docker и Docker-Compose установлены на системе. На этом шаге я покажу вам, как создать и настроить окружение docker-compose для нашего проекта WordPress.
Мы развернем PHP-приложение ‘Wordpress’ с Nginx в качестве веб-сервера и MariaDB для базы данных MySQL в качестве контейнеров Docker, управляемых docker-compose. Каждое приложение (Wordpress, Nginx и MySQL) будет работать в своем собственном контейнере, вы можете увидеть список ниже:
Nginx: Мы используем официальный образ Docker, последняя версия ‘nginx:latest’.
Wordpress: Wordpress предоставляет некоторые образы Docker на Docker Hub, и мы будем использовать WordPress 4.7 с PHP-FPM 7.0 на нем.
MySQL: Мы будем использовать официальный контейнер MariaDB, последняя версия.
Итак, нам нужно 3 образа Docker из реестра Docker Hub.
Мы не будем запускать Docker от имени root, мы будем использовать обычного пользователя Linux. Поэтому просто создайте нового пользователя с помощью команды ниже (не стесняйтесь использовать другое имя пользователя, просто убедитесь, что пользователь еще не существует. Если вы выберете другое имя, убедитесь, что вы изменили его во всех командах, которые следуют в этом руководстве):
useradd -m -s /bin/bash hakase
passwd hakaseТеперь добавьте пользователя в группу ‘docker‘, чтобы пользователь мог использовать команду docker, и перезапустите службу docker:
usermod -a -G docker hakase
systemctl restart dockerВойдите в пользователя ‘hakase’ и создайте новый каталог для проекта WordPress:
su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/Далее создайте новый файл под названием ‘docker-compose.yml‘ и создайте новый каталог для проекта. Просто введите команды ниже:
touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/Список файлов и каталогов проекта:
docker-compose.yml: Это файл конфигурации docker-compose, вы должны создать его при запуске нового проекта docker-compose.
nginx/: Этот каталог используется для нашей дополнительной конфигурации nginx, такой как виртуальный хост и т. д.
db-data/: Объем/каталог для данных mysql. Данные sql из ‘/var/lib/mysql’ монтируются в каталог db-data.
logs/: Каталог для журналов приложений, nginx, mariadb и php-fpm.
wordpress/: Все файлы wordpress будут доступны в этом каталоге.
В каталоге ‘nginx’ создайте новый файл конфигурации для нашего виртуального хоста wordpress.
Создайте новый файл wordpress.conf:
vim nginx/wordpress.confВставьте конфигурацию ниже:
server {
listen 80;
server_name wp-hakase.co;
root /var/www/html;
index index.php;
access_log /var/log/nginx/hakase-access.log;
error_log /var/log/nginx/hakase-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}Сохраните файл и выйдите из vim.
Шаг 4 - Настройка Docker-Compose
На этом шаге мы начнем редактировать файл docker-compose.yml. Когда вы хотите запустить проект docker-compose, убедитесь, что вы сначала создаете файл docker-compose.yml, как мы делаем это ниже.
Отредактируйте docker-compose.yml с помощью vim:
vim docker-compose.ymlОпределите ваши сервисы, на первой строке мы определим Nginx. Мы используем официальный образ Docker Nginx, последнюю версию, и настраиваем сопоставление портов для порта 80 на контейнере к порту 80 на хосте. Далее настройте тома Docker, том для нашей конфигурации виртуального хоста Nginx, том для файлов журналов Nginx и том для корневого каталога веба ‘/var/www/html’. Контейнер Nginx связан с контейнером WordPress.
Вставьте конфигурацию ниже:
nginx:
image: nginx:latest
ports:
- '80:80'
volumes:
- ./nginx:/etc/nginx/conf.d
- ./logs/nginx:/var/log/nginx
- ./wordpress:/var/www/html
links:
- wordpress
restart: alwaysДалее определите сервер MySQL. Мы используем образ MariaDB, последнюю версию. Настройте сопоставление портов для контейнера на порту 3306 и настройте корневой пароль MySQL с помощью переменной окружения ‘MYSQL_ROOT_PASSWORD’. Наконец, настройте том контейнера для каталога данных MySQL.
Вставьте конфигурацию ниже:
mysql:
image: mariadb
ports:
- '3306:3306'
volumes:
- ./db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=aqwe123
restart: alwaysЗатем мы настроим сервис WordPress, используя образ WordPress 4.7 с установленным PHP-FPM 7.0. Настройте порт для PHP-FPM на порту 9000, включите том Docker для веб-каталога ‘/var/www/html’ к каталогу хоста ‘wordpress’, настройте базу данных, определив переменные окружения WordPress, и свяжите сервис WordPress с MySQL.
Вставьте конфигурацию ниже:
wordpress:
image: wordpress:4.7.1-php7.0-fpm
ports:
- '9000:9000'
volumes:
- ./wordpress:/var/www/html
environment:
- WORDPRESS_DB_NAME=wpdb
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PASSWORD=aqwe123
links:
- mysql
restart: alwaysПосле добавления трех частей в файл docker-compose.yml сохраните файл и выйдите из редактора vim.
Наша конфигурация docker-compose готова.
Шаг 5 - Запуск Docker-compose
Начните создавать новые контейнеры с помощью docker compose. Перейдите в каталог wordpress-compose и запустите новые контейнеры на основе нашего файла compose.
cd ~/wordpress-compose/
docker-compose up -dВы можете увидеть результаты команды. Были созданы три контейнера. Давайте проверим статус контейнеров с помощью опции ps:
docker-compose psНиже приведен результат:

Если вы хотите увидеть вывод журнала из контейнера, вы можете использовать команды ниже:
docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpressЖурналы контейнера:

Примечание:
Если вы видите в журнале контейнера WordPress ошибку о том, что соединение с MySQL отклонено, проигнорируйте это.
Шаг 6 - Установка Wordpress
Перед тем как мы сделаем этот шаг, давайте проверим доступные порты/открытые порты на системе. Убедитесь, что у вас открыты 3 порта: порт 80, 3306 и порт 9000.
netstat -plntuРезультаты ниже:

Теперь откройте веб-браузер и введите URL-адрес или IP-адрес сервера.
Вы увидите страницу установки WordPress. Выберите свой язык и нажмите ‘Продолжить‘.

Заполните данные о вашем сайте, такие как заголовок сайта, имя администратора и пароль, ваш адрес электронной почты, а затем нажмите ‘Установить Wordpress‘.

Вы будете перенаправлены на ‘Панель управления Wordpress‘.

А это мой пример поста WordPress hello world.

Wordpress был установлен с помощью docker-compose.
Шаг 7 - Доступ к контейнеру Docker
Это дополнительный шаг о том, как получить доступ к контейнеру с помощью docker-compose. Проверьте, что все контейнеры доступны и покажите их статус:
docker-compose psУ нас уже есть 3 контейнера, теперь мы можем попробовать войти в каждый контейнер. Войдите в первый контейнер Nginx с помощью команды docker-compose.
docker-compose exec nginx bashnginx: имя сервиса в файле docker-compose docker-compose.yml
bash: выполните команду оболочки bash
Теперь проверьте нашу конфигурацию виртуального хоста WordPress.
cat /etc/nginx/conf.d/wordpress.conf
Файлы доступны в контейнере.
Далее попробуйте войти в контейнер mysql, а затем войдите в оболочку mysql с нашим паролем из файла compose.
docker-compose exec mysql bash
mysql -u root -p
ВВЕДИТЕ ПАРОЛЬ ROOT MYSQLПосмотрите список баз данных:
show databases;Вы увидите нашу базу данных WordPress.

В контейнере ‘wordpress’ вы увидите все файлы WordPress.
docker-compose exec wordpress bash
ls -lahВсе контейнеры доступны.
Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.