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 Wordpress

Если вы хотите увидеть вывод журнала из контейнера, вы можете использовать команды ниже:

docker-compose logs nginx  
docker-compose logs mysql  
docker-compose logs wordpress

Журналы контейнера:

пример команды docker-compose logs

Примечание:
Если вы видите в журнале контейнера WordPress ошибку о том, что соединение с MySQL отклонено, проигнорируйте это.

Шаг 6 - Установка Wordpress

Перед тем как мы сделаем этот шаг, давайте проверим доступные порты/открытые порты на системе. Убедитесь, что у вас открыты 3 порта: порт 80, 3306 и порт 9000.

netstat -plntu

Результаты ниже:

Порт открыт docker

Теперь откройте веб-браузер и введите URL-адрес или IP-адрес сервера.

http://serverIP/

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

Установка Wordpress выберите язык

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

Установка Wordpress Заполните данные пользователя и конфигурацию сайта

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

Панель управления Wordpress Docker-Compose

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

Wordpress с Docker-Compose

Wordpress был установлен с помощью docker-compose.

Шаг 7 - Доступ к контейнеру Docker

Это дополнительный шаг о том, как получить доступ к контейнеру с помощью docker-compose. Проверьте, что все контейнеры доступны и покажите их статус:

docker-compose ps

У нас уже есть 3 контейнера, теперь мы можем попробовать войти в каждый контейнер. Войдите в первый контейнер Nginx с помощью команды docker-compose.

docker-compose exec nginx bash

nginx: имя сервиса в файле docker-compose docker-compose.yml

bash: выполните команду оболочки bash

Теперь проверьте нашу конфигурацию виртуального хоста WordPress.

cat /etc/nginx/conf.d/wordpress.conf

Сервис Nginx docker compose

Файлы доступны в контейнере.

Далее попробуйте войти в контейнер mysql, а затем войдите в оболочку mysql с нашим паролем из файла compose.

docker-compose exec mysql bash  
mysql -u root -p  
ВВЕДИТЕ ПАРОЛЬ ROOT MYSQL

Посмотрите список баз данных:

show databases;

Вы увидите нашу базу данных WordPress.

Сервис MySQL Docker Compose

В контейнере ‘wordpress’ вы увидите все файлы WordPress.

docker-compose exec wordpress bash  
ls -lah

Все контейнеры доступны.

Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.