Главная » Администрирование Битрикс » Хостинг » Docker для разработки на Битрикс

Docker для разработки на Битрикс

Схема Docker-окружения для разработки на 1С-Битрикс с PHP-FPM, nginx и MySQL

Docker решает классическую проблему "у меня работает, а на сервере нет" — окружение разработки становится точной копией того, что реально используется на проде, а не приблизительным аналогом. Разберём, как настроить Docker-окружение для разработки на 1С-Битрикс.

Базовый набор контейнеров

# docker-compose.yml
services:
  web:
    image: php:8.2-fpm
    volumes:
      - ./:/var/www/html
    depends_on:
      - db

  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./:/var/www/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - web

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: bitrix
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

Минимальный набор из трёх сервисов — PHP-FPM, nginx и MySQL — закрывает базовые потребности разработки. Версии образов стоит подбирать максимально близкими к боевому серверу, ради которого и затевается использование Docker, — расхождение версий PHP между окружением разработки и продом сводит на нет главное преимущество контейнеризации.

Установка необходимых PHP-расширений

# Dockerfile для сервиса web
FROM php:8.2-fpm

RUN docker-php-ext-install pdo_mysql gd mbstring

RUN pecl install xdebug && docker-php-ext-enable xdebug

Стандартный образ PHP не включает все расширения, требуемые Битриксом, — их нужно явно установить через собственный Dockerfile, собранный на основе базового образа, сверяясь со списком требуемых расширений в документации системы.

Нужна помощь с Битрикс?





    Подключение Xdebug внутри контейнера

    # php.ini внутри контейнера
    xdebug.mode=debug
    xdebug.client_host=host.docker.internal
    xdebug.client_port=9003

    Для отладки с точками останова из IDE на хост-машине контейнер должен знать, куда стучаться, — специальное имя host.docker.internal позволяет контейнеру обращаться к хост-машине, где запущена IDE с прослушивающим отладчиком, что без Docker обычно решается проще через 127.0.0.1.

    Монтирование файлов и производительность на macOS/Windows

    Прямое монтирование файловой системы хоста внутрь контейнера на macOS и Windows (в отличие от Linux) исторически создаёт заметное падение скорости файловых операций из-за особенностей виртуализации файловой системы — для проектов с большим числом файлов (а Битрикс именно такой) это может ощутимо замедлять загрузку страниц в разработческом окружении. Использование именованных Docker-томов вместо прямого монтирования каталога, либо настройка кешированного режима монтирования, снижает эту проблему.

    Импорт базы данных при первом запуске

    docker exec -i project_db_1 mysql -u root -proot bitrix < dump.sql

    Первичное наполнение контейнера базы данных дампом с боевого сервера (после переноса на локальное окружение, как разобрано отдельно) выполняется через выполнение команды импорта внутри запущенного контейнера, а не через прямое обращение к файлу базы на диске, которое обходило бы сам процесс MySQL внутри контейнера.

    Готовые образы под Битрикс от сообщества

    Помимо сборки образов с нуля, существуют готовые Docker-образы, уже настроенные под требования 1С-Битрикс сообществом разработчиков, — они экономят время на первоначальной настройке, но стоит проверить их актуальность и происхождение перед использованием в проекте, особенно для боевых сценариев, а не только локальной разработки.

    Частые ошибки

    • Версии образов заметно расходятся с боевым сервером. Теряется главное преимущество Docker — идентичность окружений.
    • Не установлены обязательные PHP-расширения Битрикса. Проявляется не сразу, а на конкретной функциональности, использующей отсутствующее расширение.
    • Прямое монтирование каталога на macOS/Windows без учёта производительности. Заметное замедление файловых операций по сравнению с нативным Linux-окружением.

    Итог

    Docker-окружение для разработки на 1С-Битрикс строится вокруг трёх базовых сервисов — PHP-FPM, nginx и MySQL — с версиями, максимально близкими к боевому серверу, и собственным Dockerfile для установки требуемых PHP-расширений. Отдельного внимания требуют настройка Xdebug для отладки из контейнера и производительность файловых операций на macOS и Windows, где прямое монтирование каталога хоста работает медленнее, чем на нативном Linux.

    Нужна помощь с Битрикс?

    Исправим ошибку, доработаем сайт, ускорим Битрикс или поможем разобраться с проблемой.

    Услуги
    База знаний