Docker Compose для WordPress + MySQL 8 + Redis Cache + phpMyAdmin
Готовый docker-compose.yml для быстрого деплоя WordPress с постоянными томами (volumes), объектным кэшем Redis и веб-интерфейсом phpMyAdmin.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
docker-compose.yml
# docker-compose.yml
version: '3.8'
services:
wordpress:
image: wordpress:php8.2-apache
container_name: wp_app
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: WpSecretPassword2026!
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_CONFIG_EXTRA: |
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
volumes:
- wp_data:/var/www/html
depends_on:
- db
- redis
networks:
- wp_network
db:
image: mysql:8.0
container_name: wp_db
restart: always
environment:
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wp_user
MYSQL_PASSWORD: WpSecretPassword2026!
MYSQL_ROOT_PASSWORD: WpSecretPassword2026!_root
volumes:
- db_data:/var/lib/mysql
networks:
- wp_network
redis:
image: redis:7-alpine
container_name: wp_redis
restart: always
networks:
- wp_network
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: wp_phpmyadmin
restart: always
ports:
- "8081:80"
environment:
PMA_HOST: db
depends_on:
- db
networks:
- wp_network
networks:
wp_network:
driver: bridge
volumes:
wp_data:
db_data:
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
WORDPRESS_CONFIG_EXTRA |
Интеграция с Redis в wp-config | Автоматически прописывает параметры Redis Object Cache в wp-config.php при первом старте контейнера. |
restart: unless-stopped |
unless-stopped | Обеспечивает автоматический перезапуск контейнеров при сбое демона Docker или перезагрузке VDS. |
logging / max-size: 10m |
max-size: 10m, max-file: 3 | Ограничивает размер логов контейнеров на диске, предотвращая переполнение дискового пространства NVMe (100% Disk Full). |
volumes / app_data |
named volume / local bind | Выносит базу данных и загружаемые файлы в постоянные тома, предотвращая потерю данных при обновлении контейнеров. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 2 vCPU, 4 GB RAM, 50 GB NVMe
Расчетная нагрузка: WordPress блог или магазин
2 CPU / 4 GB NVMe
Timeweb Cloud
Рекомендуемые ресурсы
2 vCPU /
4 GB RAM /
50 GB NVMe
2 vCPU / 4 GB RAM
Selectel
Рекомендуемые ресурсы
2 vCPU /
4 GB RAM /
50 GB NVMe
Turbo 4 GB
Beget
Рекомендуемые ресурсы
2 vCPU /
4 GB RAM /
50 GB NVMe
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Как активировать Redis в WordPress?
В админке WordPress установите плагин 'Redis Object Cache' и нажмите кнопку 'Enable Object Cache'.
Как запустить и остановить стек в фоновом режиме?
Запуск: `docker compose up -d`. Остановка: `docker compose down`. Просмотр логов: `docker compose logs -f`.
Ошибка: Port already allocated (порт 80/443 занят)
Проверьте, не запущен ли локальный Nginx или Apache: `systemctl stop apache2` или `systemctl stop nginx`, либо измените внешний порт в `ports: ["8080:80"]`.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.