Docker Compose для WordPress: быстрый деплой сайта

Кто хоть раз поднимал WordPress на локалке или сервере, знает, как это бывает муторно: ставь Apache/Nginx, настраивай PHP, ковыряйся с MySQL, потом что-то не работает, а логов нет. А если тебе нужно быстро поднять тестовый сайт или развернуть несколько проектов, то это вообще боль. Docker Compose пришёл, чтобы избавить нас от этой рутины и дать возможность за пару минут получить рабочий WordPress с базой и всеми плюшками. Давайте разберёмся, как это сделать по-быстрому и без костылей.

Возможности Docker Compose для WordPress

  • Быстрый деплой — пару команд, и сайт крутится.
  • Изоляция окружения — ничего не конфликтует, не засоряет систему.
  • Лёгкое масштабирование — хочешь второй сайт? Копируй docker-compose.yml, меняй порты и имя БД.
  • Простота отката — сломал что-то? docker-compose down и всё чисто.
  • Миграция — хочешь перенести сайт? Просто передай папку с проектом и дамп базы.

Что потребуется (требования, ОС, железо)

  • Операционная система: Linux (Ubuntu, Debian, Fedora), macOS, Windows (через WSL2 или Docker Desktop).
  • Железо: 2+ ГБ ОЗУ, 2 CPU — больше, если планируешь работать не только с одним сайтом.
  • ПО:
    • Docker (актуальная версия, лучше 24+)
    • Docker Compose (v2.x или встроенный в Docker Desktop)
    • Желательно git для клонирования репозиториев (по желанию)

Установка — пошаговая инструкция

  1. Ставим Docker и Docker Compose
    Linux:

    sudo apt update
    sudo apt install docker.io docker-compose -y
    sudo systemctl enable docker --now
    

    macOS/Windows: Docker Desktop — всё в комплекте.

  2. Создаём проект
    mkdir wp-docker && cd wp-docker
    
  3. Пишем docker-compose.yml
    version: '3.9'
    
    services:
      db:
        image: mysql:5.7
        container_name: wp-db
        restart: always
        environment:
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wpuser
          MYSQL_PASSWORD: wppass
          MYSQL_ROOT_PASSWORD: rootpass
        volumes:
          - db_data:/var/lib/mysql
    
      wordpress:
        image: wordpress:latest
        container_name: wp-app
        depends_on:
          - db
        ports:
          - "8080:80"
        restart: always
        environment:
          WORDPRESS_DB_HOST: db:3306
          WORDPRESS_DB_USER: wpuser
          WORDPRESS_DB_PASSWORD: wppass
          WORDPRESS_DB_NAME: wordpress
        volumes:
          - ./wp-content:/var/www/html/wp-content
    
    volumes:
      db_data:
    
    • Меняй пароли под себя, не держи их такими в проде.
    • Порт 8080 — чтобы не мешать стандартному 80-му.
    • wp-content монтируется локально — удобно для разработки.
  4. Запускаем всё это дело
    docker-compose up -d
    

    Через минуту-две WordPress будет доступен на http://localhost:8080

  5. Установка WordPress
    Открывай браузер, проходи стандартный setup (язык, логин, пароль, почта).

Использование: команды и варианты

  • docker-compose up -d — запуск в фоновом режиме.
  • docker-compose down — стоп и удаление контейнеров (БД не трогается, т.к. volume).
  • docker-compose logs -f — смотреть логи.
  • docker-compose exec wordpress bash — попасть внутрь контейнера WP.
  • docker-compose exec db bash — попасть внутрь контейнера БД.
  • docker-compose stop / start — стоп/старт без удаления.
  • docker-compose down -v — удалить контейнеры и volume (БД будет удалена!).
  • Остановка и обновление образов:
    docker-compose pull
    docker-compose up -d --build
    
  • Бэкап базы:
    docker-compose exec db sh -c 'exec mysqldump -u wpuser -pwppass wordpress' > backup.sql
    

Ошибки и как делать не надо

  • Не храни пароли в открытом виде в публичных репах.
  • Не используй latest для production — всегда указывай конкретный тег образа.
  • Не забывай про volume для wp-content, иначе при пересоздании контейнера потеряешь темы/плагины.
  • Не запускай всё под root, если не понимаешь, зачем.
  • Не открывай порт 3306 наружу (MySQL) без необходимости.
  • Если на сервере уже что-то крутится на 80-м порту — не мапь туда WordPress, используй другой порт или прокси.

Пример реального использования в окружении

В команде делаем фичи для WP-клиентов. Каждый разработчик клонирует репу, кидает свой docker-compose.yml, стартует проект и работает с ним локально, не боясь сломать прод. Для тестирования плагинов или тем — просто подмениваешь папку wp-content на свою, и всё работает. Если надо — можно быстро запустить несколько разных версий WP, меняя только тег образа и порт.

Для CI/CD: на сервере Jenkins или GitLab CI можно запускать тесты в изолированном окружении, поднимая свежий WordPress перед прогоном автотестов, а потом всё удалять.

Заключение

Docker Compose — реально спасение для тех, кто не хочет тратить время на ручную настройку окружения для WordPress. Всё быстро, чисто, удобно и воспроизводимо. Пара минут — и у тебя готовый сайт, который можно масштабировать, переносить, откатывать и тестировать сколько угодно раз.

Официальные ссылки для изучения:

Всё просто: не бойся экспериментировать, автоматизируй рутину и не забывай бэкапить базу 🙂

Хотите прочитать больше про Разное?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *