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

Чому Docker — найкращий вибір для 1С-Бітрікс? Уявіть: інтернет-магазин на Бітрікс з каталогом у 100 000 товарів. BitrixVM падає при пікових навантаженнях, а розгорнути середовище для розробки — ціла епопея. Це знайома ситуація. Ми вирішили її за допомогою [Docker](https://en.wikipedia.org/wiki/Do
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Docker для 1С-Бітрікс: практичний посібник із контейнеризації
Середній
~1-2 тижні

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1017
  • 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
    759
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

Чому 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 і скоротити витрати на інфраструктуру.