Appearance
Docker
Назначение
Docker используется на сервере production для изолированного запуска вспомогательных сервисов, необходимых для работы основного сайта:
MySQL— СУБД, обслуживающая WordPressphpMyAdmin— интерфейс для администрирования MySQL (включается только при необходимости)
Сами сервисы WordPress и Nginx запущены напрямую в системе, не в контейнерах. Такой подход упрощает настройку HTTPS, постоянную работу cron-задач и уменьшает время отклика сайта
Состав и описание контейнеров
1. mysql
Образ:
mysql:5.7.21Порты:
127.0.0.1:3306(только локальный доступ, закрыт от внешнего мира)Данные сохраняются в volume
mysql_dataПри запуске выполняются SQL-скрипты из каталога
./init_db(если они есть)Переменные окружения:
MYSQL_ROOT_PASSWORD— пароль root-пользователяMYSQL_USER— дополнительный пользовательMYSQL_PASSWORD— пароль дополнительного пользователя
🔒 Безопасность: проброс порта только на 127.0.0.1 защищает от внешних подключений, снижает риски брутфорса и сканирования порта
2. phpmyadmin
Образ:
phpmyadmin:latestПорты:
8080:80Интерфейс доступен по адресу:
http://<IP-сервера>:8080Подключается к контейнеру
mysqlНастройки берутся из volume
phpmyadmin_data, содержащего файлconfig.user.inc.phpПеременные окружения:
PMA_HOST— имя контейнера с MySQL (mysql)MYSQL_ROOT_PASSWORD— тот же пароль, что и у сервисаmysql
⚙️ Режим работы: контейнер phpMyAdmin не работает постоянно. Он активируется только при необходимости администрирования базы данных и выключается сразу после завершения работы, чтобы сократить площадь атаки и не держать лишний публичный интерфейс
Файлы и расположение
Файл docker-compose.yml
Находится в директории:
bash
/var/www/docker/docker-compose.ymlПример структуры:
yaml
services:
mysql:
image: mysql:5.7.21
restart: always
environment:
MYSQL_ROOT_PASSWORD: ...
MYSQL_USER: ...
MYSQL_PASSWORD: ...
volumes:
- mysql_data:/var/lib/mysql
- ./init_db:/docker-entrypoint-initdb.d
ports:
- '127.0.0.1:3306:3306'
phpmyadmin:
image: phpmyadmin:latest
restart: always
depends_on:
- mysql
environment:
PMA_HOST: mysql
MYSQL_ROOT_PASSWORD: ...
ports:
- '8080:80'
volumes:
- phpmyadmin_data:/etc/phpmyadmin/config.user.inc.php
volumes:
mysql_data:
phpmyadmin_data:Команды управления
Посмотреть статус всех сервисов
bash
docker psЗапуск сервисов
bash
cd /var/www/docker
docker compose up -d⚠️ Контейнер phpMyAdmin можно запускать вручную при необходимости:
bash
docker compose up -d phpmyadminи останавливать после завершения администрирования БД:
bash
docker compose stop phpmyadminПросмотр логов
Просмотр логов конкретного сервиса
bash
docker logs <container_id>Просмотр логов конкретного сервиса в режиме реального времени
bash
docker logs -f <container_id>Перезапуск контейнеров
bash
docker compose restartОстановка и удаление всех контейнеров (без удаления данных)
bash
docker compose down💡 Данные хранятся в volumes mysql_data и phpmyadmin_data, и не будут потеряны при остановке или пересборке контейнеров