Docker Compose для WordPress + MySQL 8 + Redis Cache + phpMyAdmin

Обновлено: Сентябрь 2026 Стек: WordPress:latest, MySQL 8.0, Redis 7, phpMyAdmin Проверено: Production-Ready

Готовый 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"]`.