webiland / bitrix-install
bitrix-install: Docker starter for 1C-Bitrix (nginx, PHP 8.2, MySQL 8, Redis, MailHog, cron)
Requires
- php: ^8.2
README
Проект bitrix-install — стартовый каркас для разработки и тестирования сайтов на 1С-Битрикс: Управление сайтом в контейнерах. Корень сайта (document root) — каталог public/: сюда кладут bitrixsetup.php / bitrix_server_test.php, сюда же установщик распакует bitrix/, upload/ и остальные файлы CMS. В корне репозитория остаются только Docker, .env, Composer и служебные файлы — они в веб не торчат. Каталоги public/bitrix/ и public/upload/ в Git не входят (см. .gitignore). Официальные скрипты установки и проверки нужно скачать с сайта 1С-Битрикс (см. ниже).
Для чего сделан
- Единообразно поднять окружение nginx + PHP 8.2 (FPM) + MySQL 8 + Redis без ручной установки стека на хост.
- После скачивания официальных скриптов — проверить окружение и установить продукт через
bitrix_server_test.phpиbitrixsetup.php. - Отлаживать почту через MailHog (письма не уходят наружу).
- Запускать агенты Битрикс по cron в отдельном контейнере.
Требования
- Docker и Docker Compose (v2, команда
docker compose). - На Linux / WSL2: для части проверок ФС у каталога проекта должны быть подходящие права для пользователя
www-data(uid 33), см. раздел Права на файлы. - Для установки шаблона через Composer на машине нужен Composer и PHP 8.2+ (скрипт после
create-projectвыполняется локально).
Установка через Composer
Вместо git clone можно развернуть тот же каркас командой composer create-project (пакет на Packagist — webiland/bitrix-install):
composer create-project webiland/bitrix-install имя-проекта
cd имя-проекта
После установки Composer выполнит post-create-project-cmd: scripts/init-env.php создаст .env из .env.example, если .env ещё нет. Вручную то же самое: composer run init-env. Проверьте в .env значения PUID/PGID (id -u / id -g на хосте). Дальше — как в быстром старте: docker compose up -d --build и браузер.
Проверка с локального клона без Packagist (без git-тегов версия пакета будет dev-*, поэтому укажите стабильность):
composer create-project webiland/bitrix-install /tmp/bitrix-test \
--stability=dev \
--repository='{"type":"path","url":"/абсолютный/путь/к/этому/репозиторию"}'
Быстрый старт
Клонировать репозиторий и перейти в каталог проекта (или использовать установку через Composer):
git clone git@gitlab.com:webiland/bitrix-install.git bitrix-install cd bitrix-installСоздать файл окружения из примера, подставить свои UID/GID с хоста и при необходимости изменить порты и пароли:
cp .env.example .env # в .env выставьте PUID и PGID (см. ниже) — иначе public/ может стать недоступен для записи из IDEСобрать образы и запустить контейнеры:
docker compose up -d --buildСкачать официальные скрипты и положить их в
public/(document root): bitrix_server_test.php и bitrixsetup.php (установщик BitrixSetup). Дистрибутив и папкиbitrix/,upload/появятся вpublic/. Подробнее — в разделе Скрипты проверки и установки.Открыть в браузере (порт по умолчанию из
.env.example— 8088):- проверка сервера:
http://localhost:8088/bitrix_server_test.php - установка дистрибутива:
http://localhost:8088/bitrixsetup.php
- проверка сервера:
В мастере установки Битрикс в поле хост (сервер) БД укажите
mysql— это имя сервиса MySQL в сети Docker (неlocalhost). Логин и пароль зависят от сценария:- Подключаетесь к уже созданной базе: хост
mysql; логин и пароль —MYSQL_USER/MYSQL_PASSWORD, база —MYSQL_DATABASE(вdocker-composeбаза создаётся при старте; в.env.exampleпо умолчанию пользовательbitrix/bitrix, базаbitrix). - Создаёте новую базу через мастер: хост
mysql; логинroot, парольMYSQL_ROOT_PASSWORDиз.env(в примере —root).
Установщик сам создаст
public/bitrix/php_interface/dbconn.php. После установки при необходимости проверьте параметры БД в админке.- Подключаетесь к уже созданной базе: хост
MailHog
Веб-интерфейс перехваченной почты: http://localhost:8025 (порт задаётся переменной MAILHOG_PORT в .env). Отправка из PHP идёт через msmtp в контейнере php на сервис mailhog:1025.
Cron (агенты Битрикс)
Контейнер cron раз в минуту запускает public/bitrix/php_interface/cron_events.php, если файл появился после установки CMS.
Сервисы и порты
| Сервис | Описание |
|---|---|
nginx | HTTP, раздача проекта |
php | PHP 8.2 FPM |
mysql | MySQL 8.0, данные в томе mysql_data |
redis | Redis 7, кэш/сессии при настройке в Битрикс |
mailhog | Тестовая SMTP |
cron | Планировщик агентов |
Порт сайта: HTTP_PORT в .env (в примере — 8088). Если .env нет, используется значение по умолчанию из docker-compose.yml (8080).
Скрипты проверки и установки с сайта 1С-Битрикс
Файлы bitrix_server_test.php (проверка окружения) и bitrixsetup.php / установщик BitrixSetup не входят в репозиторий bitrix-install и не попадают в пакет Composer. Скачайте их у правообладателя по прямым ссылкам или через документацию.
| Назначение | Файл | Прямая загрузка (1С-Битрикс) |
|---|---|---|
| Проверка сервера и хостинга | bitrix_server_test.php | www.1c-bitrix.ru/.../bitrix_server_test.php |
| Установка дистрибутива (BitrixSetup) | bitrixsetup.php | www.1c-bitrix.ru/.../bitrixsetup.php |
Зеркало для bitrix_server_test.php на поддомене разработчиков: dev.1c-bitrix.ru/.../bitrix_server_test.php.
Скачать в public/ из терминала:
curl -fLo public/bitrix_server_test.php https://www.1c-bitrix.ru/download/scripts/bitrix_server_test.php
curl -fLo public/bitrixsetup.php https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php
Дополнительно в документации: урок про скрипт проверки, урок про BitrixSetup, общий курс «Установка и настройка», раздел загрузок.
Положите оба файла в public/ (в контейнере это /var/www/html/public), затем откройте в браузере — URL не меняются: http://localhost:ПОРТ/bitrixsetup.php и т.д.
Подключение к БД
Переменные *`MYSQL_** задаются в **.env** и пробрасываются в контейнер php (см. docker-compose.yml). Файла **public/bitrix/php_interface/dbconn.php` в репозитории нет** — его создаёт мастер установки Битрикс.
Хост БД в форме установки и в dbconn.php всегда mysql (для PHP внутри Docker это имя контейнера/сервиса; localhost не подойдёт).
| Ситуация | Хост | Логин | Пароль | База |
|---|---|---|---|---|
| Работа с базой, которую уже создал Docker (рекомендуется) | mysql | MYSQL_USER (по умолчанию bitrix) | MYSQL_PASSWORD (по умолчанию bitrix) | MYSQL_DATABASE (по умолчанию bitrix) |
| Создание новой базы в мастере установки | mysql | root | MYSQL_ROOT_PASSWORD (по умолчанию root) | имя новой БД по вашему выбору |
Значения по умолчанию см. в .env.example; если меняли .env, ориентируйтесь на него.
Права на файлы (Linux / WSL)
В .env задайте PUID и PGID — это uid и gid вашего пользователя на хосте (не в контейнере):
id -u # → PUID
id -g # → PGID
В .env.example стоят заглушки 1000/1000; если у вас другие числа — поправьте .env, иначе после docker compose up каталог public/ может оказаться «чужим» (владелец uid 33 или несовпадающий с вами), и редактор не сможет сохранять файлы.
При старте php и cron скрипт docker/php/docker-entrypoint-bitrix.sh:
- Меняет в контейнере пользователя
www-dataнаPUID/PGID(usermod/groupmod), чтобы PHP писал в bind-mount под тем же числовым владельцем, что и вы на хосте. - Создаёт
public/при необходимости, делаетchown www-data:www-data(уже с вашим uid) и 775/664 на каталоги и файлы.
После смены PUID/PGID перезапустите контейнеры: docker compose up -d.
Самотест bitrix_server_test.php иногда требует права на весь репозиторий — тогда из корня проекта:
sudo chown -R "$(id -u):$(id -g)" .
# или временно
chmod -R a+rwx .
На Docker Desktop (macOS / Windows) владение на томах ведёт себя иначе, чем в Linux/WSL; при проблемах удобнее разрабатывать в Linux / WSL2.
Остановка и данные
docker compose down
Тома mysql_data и redis_data сохраняются — база и данные Redis не пропадут при следующем up. Полное удаление томов:
docker compose down -v
Репозиторий Git: как развернуть «с нуля»
Подходит для команды: один раз настроили репозиторий — дальше клонируют и поднимают стек одними и теми же шагами.
Инициализация у владельца проекта
cd /path/to/shablon
git init
git add .
git commit -m "Initial commit: Docker-окружение для Битрикс"
git branch -M main
git remote add origin git@gitlab.com:webiland/bitrix-install.git
git push -u origin main
Файл .env в репозиторий не попадает (см. .gitignore). В облачном Git обязательно хранить только .env.example без секретов; реальные пароли — в CI/CD переменных или в .env только на сервере/у разработчика.
У нового разработчика или на сервере
git clone git@gitlab.com:webiland/bitrix-install.git bitrix-install
cd bitrix-install
cp .env.example .env
# отредактировать .env при необходимости
docker compose up -d --build
Дальше — скачать официальные bitrix_server_test.php и bitrixsetup.php, установить CMS через bitrixsetup.php или восстановить из бэкапа по документации Битрикс.
Что обычно не коммитят после установки CMS
После полной установки в public/ появятся bitrix/, upload/ и файлы сайта. В .gitignore исключены /public/bitrix/ и /public/upload/, чтобы ядро и загрузки не попадали в Git.
Структура репозитория (кратко)
| Путь | Назначение |
|---|---|
composer.json | Метаданные пакета для composer create-project, скрипт инициализации .env |
scripts/init-env.php | Копия .env.example → .env (create-project и composer run init-env) |
docker-compose.yml | Сервисы и сеть |
docker/nginx/ | Конфиг nginx |
docker/php/ | Dockerfile PHP-FPM, php.ini, cron, msmtp |
docker/mysql/ | Настройки MySQL под Битрикс |
.env.example | Шаблон .env: порты, MySQL, PUID/PGID (права на public/), установка Битрикс |
public/ | Document root: сюда установщик и CMS; в репозитории закреплён public/.gitkeep |
Каталоги public/bitrix/ и public/upload/ после установки не версионируются (см. .gitignore). Скрипты bitrix_server_test.php и bitrixsetup.php в репозитории отсутствуют — прямые ссылки: bitrix_server_test.php, bitrixsetup.php (см. раздел выше).
Лицензия и торговые марки
1С-Битрикс — продукт компании «1С-Битрикс». Данный репозиторий содержит только окружение запуска; лицензирование и использование ПО Битрикс регулируются условиями правообладателя. Официальные скрипты установки и проверки распространяются отдельно по правилам правообладателя.