Как развернуть 1С-Битрикс в Docker локально — пошаговое руководство с использованием bitrix-docker/server
Практическая инструкция для разработчиков: как быстро развернуть локальный стек 1С‑Битрикс в Docker, настроить .env, собрать и запустить docker compose, установить дистрибутив Bitrix и избежать типичных ловушек производительности и прав.
Почему локальный Docker — это удобно для 1С‑Битрикс
Контейнеры дают окружение: одинаковые версии PHP, СУБД, кеш‑сервисов, единые конфигурации веб‑сервера. То, что у вас работает локально, с высокой вероятностью будет вести себя так же на стендах и в продакшене. Вы экономите время на подготовке окружения и снижаете количество «странных» багов, завязанных на различиях ОС и версий библиотек. Плюс — меньше ручной рутины и легче онбордить новых разработчиков.
Что такое bitrix‑docker/server и чем он полезен
bitrix‑docker/server — это готовый стек контейнеров для проектов на 1С‑Битрикс: PHP‑FPM, Nginx, база данных (MySQL/MariaDB или PostgreSQL), кеш (Redis/Memcached), отдельный контейнер для cron, инструменты логирования и почтовый сервис для разработки. Подход рассчитан на работу «из коробки», при этом конфигурации прозрачно меняются через .env и docker-compose.yml.
Проект активно развивается сообществом, что важно для актуальности образов и совместимости: регулярно обновляются конфигурации, добавляются полезные сервисы (почтовые заглушки, сбор и просмотр логов), исправляются мелкие баги и шероховатости.
Подготовка окружения: что нужно сделать заранее
Установите Docker и Docker Compose
Проверьте, что Docker установлен и запускается, а compose доступен:
docker --version
docker compose version
Если у вас старая бинарь docker-compose, команды будут аналогичны.
Подготовьте рабочую папку проекта
Создайте директорию для локального окружения (например, ~/projects/bitrix-docker/myproject) и клонируйте туда репозиторий bitrix‑docker/server или добавьте его как подмодуль/шаблон для ваших проектов.
git clone https://gitlab.com/bitrix-docker/server.git .
Сконфигурируйте .env
Скопируйте .env.example в .env и аккуратно пройдитесь по ключевым переменным:
- Домены для локального доступа (например,
myproject.local). - Порты сервисов (HTTP/HTTPS, БД, почта), чтобы не конфликтовали с работающими на хосте.
- Версии PHP и СУБД, включение Redis/Memcached и др.
- Настройки томов (куда монтируем код, куда складываются данные баз).
Ошибки в .env — частая причина того, что окружение «не поднимается».
Настройте hosts и проверьте свободные порты
Добавьте домен(ы) проекта в /etc/hosts → 127.0.0.1 myproject.local. Убедитесь, что указанные порты не заняты локальными сервисами.
Apple Silicon (ARM64)
Если вы на macOS с чипом M‑series, при проблемах со сборкой/запуском образов временно укажите платформу по умолчанию: DOCKER_DEFAULT_PLATFORM=linux/amd64 (в .env или в окружении), а далее подбирайте совместимые образы.
Пошаговая установка: от инициализации до рабочего сайта
Шаг 1. Инициализация структуры и прав
Во многих шаблонах окружения предусмотрены скрипты для подготовки каталогов и прав доступа. Если в вашем форке/шаблоне есть init.sh — запустите его:
chmod +x init.sh
./init.sh db
./init.sh owner "$USER"
./init.sh perm
Цель — создать каталоги данных, выставить корректные UID/GID и права, чтобы контейнеры могли читать и писать.
Шаг 2. Сборка образов
docker compose build
Первый билд может занять заметное время — докачиваются базовые образы, ставятся расширения PHP, собираются конфигурации веб‑сервера.
Шаг 3. Подъём сервиса
docker compose up -d
Проверьте статусы:
docker compose ps
Производительность локального Docker‑окружения
На macOS и Windows проседание I/O на расшаренных томах — частая причина «тормозов». Полезные практики:
- Минимизируйте количество файлов, которые активно читаются/пишутся внутри расшаренного каталога. Исключите
node_modules/, кеши, логи в нерасшаренные тома. - Используйте кеши компиляции PHP и опкеш:
opcacheс разумными настройками для дев‑режима. - Включите Redis/Memcached и храните сессии/кеш вне файловой системы.
- Периодически чистите устаревшие образы/тэги:
docker system prune(осторожно: удалит неиспользуемые ресурсы). - Для Xdebug используйте адрес
host.docker.internal(или его эквивалент на Linux) и профилируйте точечно.
Кому подойдёт Docker‑подход и когда лучше выбрать «классику»
Подойдёт, если вы или команда цените воспроизводимость окружения, часто разворачиваете тестовые копии, используете очереди/кеш/cron. Осторожно, если вы новичок в Docker, у вас очень слабая машина или нет потребности в полноценном стеке — тогда можно начать с менее «тяжёлых» решений и вернуться к контейнерам позже.
Сравнение: классическое локальное окружение vs Docker
| Параметр | Классика (OpenServer/VM) | Docker (bitrix‑docker/server) |
|---|---|---|
| Время старта | Часы настройки | Минуты + корректный .env |
| Соответствие продакшену | Зависит от рук | Высокая консистентность |
| Обновления | Ручные, риски несовместимости | Смена образов, версионирование |
| Переносимость | Средняя | Высокая (compose + volumes) |
| Кеш/очереди/cron | Добавляются вручную | Включаются конфигами |
Итоги и практические советы
- Держите
.envаккуратным и версионируйте его шаблон, но не сами секреты. - Следите за UID/GID и правами — это половина успеха «чтобы всё писалось».
- Старайтесь повторять продакшен‑технологии: Redis для сессий, очереди, cron — даже локально.
- Включайте наблюдаемость: логи веб‑сервера, PHP, БД и, при необходимости, стек логирования (Loki/Grafana/Promtail) из шаблона.
- Не забывайте про бэкапы и экспорт дампов БД, даже на локалке.
- При публикации в команду — документируйте нестандартные решения и договоритесь о едином
docker compose.
Готовый чек‑лист запуска
- Установить Docker/Compose. Проверить версии.
- Клонировать шаблон окружения и создать
.env. - Инициализировать каталоги и права (если предусмотрено).
docker compose build→up -d.- Скачать
bitrixsetup.phpв контейнер PHP и пройти установку. - Включить кеш/сессии в Redis/Memcached, проверить cron и почтовую заглушку.
- Настроить домены/SSL (при необходимости), Xdebug, профилинг.
Эта инструкция рассчитана на разработчиков. Для продакшена потребуются дополнительные меры безопасности: управление секретами, политика обновлений, мониторинг, сетевые правила, бэкапы и тесты восстановления.
Ссылка на проект: gitlab.com/bitrix-docker/server