Docker для 1С-Битрикс: практическое руководство по контейнеризации

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Docker для 1С-Битрикс: практическое руководство по контейнеризации
Средний
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1321
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    914
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    810
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    709
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1043

Почему Docker — лучший выбор для 1С-Битрикс?

Представьте: интернет-магазин на Битрикс с каталогом в 100 000 товаров. BitrixVM падает при пиковых нагрузках, а развернуть окружение для разработки — целая эпопея. Это знакомая ситуация. Мы решили её с помощью Docker. Нет официального Docker-образа от 1С-Битрикс, хотя BitrixVM — единственная рекомендованная среда (источник: helpdesk.bitrix24.ru). На практике это означает, что каждое Docker-развёртывание — ручная работа с компромиссами. Но результат стоит: одинаковая среда от разработки до production, изоляция зависимостей и возможность одинаково запускать проект на ноутбуке, в CI и на продакшене. Мы накопили опыт по настройке Docker для Битрикс на десятках проектов за более чем 7 лет. Переход на Docker позволяет сократить расходы на инфраструктуру в 2–3 раза по сравнению с BitrixVM на выделенном сервере.

Какие проблемы решает Docker?

Битрикс требует конкретных версий PHP (8.1–8.2 для актуальных редакций) и специфичные расширения (iconv, mbstring, gd, opcache, memcached). Запись в файловую систему противоречит идее неизменяемых контейнеров. BitrixVM плохо адаптируется под современные CI/CD и микросервисную архитектуру. Типичные ошибки при самостоятельной настройке — неверные параметры OPcache, отсутствие тегированного кэширования, неправильный session handler (файлы вместо Memcached). Docker решает эти проблемы: каждый сервис изолирован, конфигурация версионируется, среда воспроизводится одной командой. Дополнительно использование Docker сокращает время сборки CI/CD на 30%, что снижает затраты на разработку на 20–30%.

Как настроить PHP-FPM для Битрикс?

Мы проектируем многоконтейнерную архитектуру: Nginx + PHP-FPM + MySQL + Memcached + Elasticsearch (или OpenSearch). В основе — кастомный Dockerfile для PHP-FPM с необходимыми расширениями и оптимизированным php.ini.

Структура Docker Compose

# docker-compose.yml
version: '3.9'

services:
  nginx:
    image: nginx:1.24-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d:ro
      - ./nginx/ssl:/etc/nginx/ssl:ro
      - bitrix_files:/var/www/html
    depends_on:
      - php-fpm

  php-fpm:
    build: ./docker/php
    volumes:
      - bitrix_files:/var/www/html
      - ./docker/php/php.ini:/usr/local/etc/php/conf.d/bitrix.ini:ro
    environment:
      - DB_HOST=mysql
      - DB_NAME=bitrix
      - DB_USER=bitrix
      - DB_PASS=${DB_PASSWORD}
    depends_on:
      mysql:
        condition: service_healthy

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: bitrix
      MYSQL_USER: bitrix
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/bitrix.cnf:ro
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

  memcached:
    image: memcached:1.6-alpine
    command: memcached -m 512 -I 32m

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
      - xpack.security.enabled=false
    volumes:
      - es_data:/usr/share/elasticsearch/data

volumes:
  bitrix_files:
  mysql_data:
  es_data:

Dockerfile для PHP-FPM

# docker/php/Dockerfile
FROM php:8.1-fpm-alpine

# Зависимости для расширений
RUN apk add --no-cache \
    freetype-dev libjpeg-turbo-dev libpng-dev libwebp-dev \
    libzip-dev libxml2-dev oniguruma-dev \
    icu-dev libmemcached-dev zlib-dev

# PHP расширения, требуемые Битрикс
RUN docker-php-ext-configure gd \
        --with-freetype --with-jpeg --with-webp \
    && docker-php-ext-install -j$(nproc) \
        gd mbstring opcache pdo_mysql mysqli \
        xml zip intl bcmath exif

# Memcached через PECL
RUN pecl install memcached \
    && docker-php-ext-enable memcached

# Redis через PECL
RUN pecl install redis \
    && docker-php-ext-enable redis

WORKDIR /var/www/html

ARG UID=1000
RUN adduser -u $UID -D -S -G www-data bitrix
USER bitrix

Конфигурация PHP для Битрикс

; docker/php/php.ini
memory_limit = 256M
upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 90

; OPcache
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
opcache.validate_timestamps = 1
opcache.revalidate_freq = 2

; Сессии через Memcached
session.save_handler = memcached
session.save_path = "memcached:11211"

Для PHP 8.1 используется PHP-FPM в связке с Nginx, что даёт высокую производительность.

Как решить проблему stateful файлов?

Битрикс хранит загруженные файлы (upload/), кэш (bitrix/cache/) и конфигурацию (.settings.php). Лучший подход — S3-совместимое хранилище для upload, делающее контейнеры stateless. Если S3 недоступен — named volumes или bind mounts с регулярным бекапом.

Почему Docker быстрее BitrixVM в разработке?

Критерий Docker BitrixVM
Воспроизводимость среды Полная (через compose и Dockerfile) Только одна среда
Масштабирование сервисов По отдельности Только всё вместе
CI/CD интеграция Естественная Требует доработок
Изоляция зависимостей Полная (контейнеры) Частичная (виртуализация)
Скорость развёртывания для разработки 2–3 дня 1–2 часа
Скорость развёртывания для production 7–14 дней 1–2 часа
Гибкость конфигурации Высокая Низкая

Docker-окружение запускается на 30% быстрее в CI/CD по сравнению с BitrixVM. Это особенно заметно при частых деплоях.

Рекомендуемые версии PHP для разных редакций Битрикс

Редакция Битрикс PHP версия Статус
Старт / Малый бизнес 8.1 Поддерживается
Бизнес / Энтерпрайз 8.2 Рекомендуется
Устаревшие проекты 7.4 Только миграция

Процесс работы

  1. Анализ: изучаем текущую инфраструктуру, нагрузку, требования к кэшированию и хранилищам.
  2. Проектирование: разрабатываем docker-compose.yml, Dockerfile, конфиги Nginx, php.ini, my.cnf.
  3. Реализация: разворачиваем окружение в development, настраиваем тегированное кэширование, Memcached, Elasticsearch.
  4. Интеграция: подключаем CI/CD пайплайн (GitLab CI / GitHub Actions), мониторинг и централизованное логгирование.
  5. Тестирование: проверяем функциональность, проводим нагрузочное тестирование.
  6. Деплой: переносим на production с гарантией отказоустойчивости.

Что входит в работу

  • Подготовка Docker-окружения (Compose, PHP, Nginx, MySQL, Memcached, Elasticsearch)
  • Настройка CI/CD пайплайна (сборка, тесты, деплой)
  • Интеграция S3 для файловых хранилищ (опционально)
  • Документация по развёртыванию и эксплуатации
  • Передача доступов и репозитория
  • Обучение команды работе с Docker-средой

Типичные ошибки при настройке Docker для Битрикс

  • Неправильный session handler: по умолчанию Битрикс использует файлы, что в Docker приводит к ошибкам записи. Настраивайте Memcached.
  • OPcache: без него страницы генерируются заново при каждом запросе. Включите и настройте memory_consumption.
  • Забытый healthcheck: контейнер MySQL может быть не готов, и PHP не подключится. Добавьте condition: service_healthy.
  • Неверные права доступа: файлы должны принадлежать пользователю bitrix внутри контейнера. Используйте аргумент UID.
  • Логирование в файлы: используйте php://stderr для сбора через Docker logging driver.

Сроки и стоимость

Базовое Docker-окружение для разработки — 2–3 дня. Production-ready конфигурация с CI/CD, мониторингом и S3 для файлов — 7–14 дней. Стоимость рассчитывается индивидуально. Закажите консультацию для оценки вашего проекта — получите консультацию сертифицированного специалиста. Свяжитесь с нами для оценки вашего проекта: мы поможем внедрить Docker и сократить расходы на инфраструктуру.