Docker-окружение для Bitrix (env-docker)
Этот проект предназначен для быстрого развертывания локального окружения для разработки на Битрикс с использованием Docker. В основе лежит репозиторий https://github.com/bitrix-tools/env-docker
Директории
- mysql — файлы баз данных MySQL. Эта папка привязана к контейнеру через bind mount, поэтому данные сохраняются даже после удаления контейнеров.
- www — файлы проектов (скрипты Битрикс). Это основной рабочий каталог для разработки.
Навигация
- Инициализация проекта
- Настройка среды разработки
- Настройка доступа к сайту
- Настройка Xdebug
- Docker
- Управление контейнерами (Docker Compose)
Инициализация проекта
-
Создайте директорию для вашего проекта и перейдите в неё.
-
Скачайте и распакуйте архив с репозиторием
https://g.it4gaz.ru/internal-automation/b24-docker
-
Запустите docker
-
В www Необходимо добавить папки:
вся публичная часть- берем из репозитория с публичкой/bitrix- из копии б24/upload- из копии б24
Взять их можно из полной копии проекта (склеить и распаковать полный архив)
# Склеить архив и сразу распаковать (для не сжатых архивов):
cat *$(ls -v *tar.*) | tar xf -
# Склеить архив и распаковать (для сжатых архивов):
cat *$(ls -v *tar.gz*) | tar xzf -
Далее перенести необходимые директории
Настройка среды разработки
Настройки вносятся до первого запуска контейнеров
- Скопируйте файлы
cp .env.example .env
cp .env_sql.example .env_sql
cp .env_push.example .env_push
cp confs/php84/etc/php/conf.d/timezone.ini.example confs/php84/etc/php/conf.d/timezone.ini
- Заполните их значениями для вашей среды разработки:
Пароль к базам данных MySQL
Пароль для суперпользователя root задается в файле .env_sql:
MYSQL_ROOT_PASSWORD="..."
Секретный ключ для Push-сервера
Ключ используется для подписи соединений между клиентом и Push-сервером. Он задается в файле .env_push, можно использовать уже установленное значение
PUSH_SECURITY_KEY=...
Часовой пояс (timezone)
Часовой пояс для контейнеров задается в двух местах
- Файл
.env. (основная настройка для большинства сервисов). Значение задано как:
TZ=Europe/Moscow
- Файл
confs/php84/etc/php/conf.d/timezone.ini(настройка для PHP):
date.timezone = Europe/Moscow
После выполнения этих шагов можно переходить к запуску контейнеров.
Настройка доступа к сайту
Для macOS. Сайт использует порты 8560 (HTTP) и 8561 (HTTPS). Эти настройки указаны в файле docker-compose.yml.
Если порты заняты, можно указать другие в docker-compose.yml.
Предварительная настройка (общая для обоих способов)
Как открывать сайт:
- через
127.0.0.1:8560 b24.local:8560
- Добавьте запись в файл
/etc/hosts. Это свяжет доменное имя с локальным компьютером.
sudo nano /etc/hosts
Добавьте строку:
127.0.0.1 b24.local
- (Опционально) Создайте тестовый файл.
Для проверки работы создайте в директории data/www файл
index.phpс содержимым:
<?php
phpinfo();
- Если настраиваете другой хост, поменяйте его в confs/nginx/conf.d/default.conf
Настройка Xdebug
Настраиваем PhpStorm
1. Настройка PHP Interpreter
Settings→PHP→CLI Interpreter→+→From Docker, Vagrant, WSL...- Выберите
Docker Compose - Укажите путь к
docker-compose.ymlи сервисphp PhpStormподключится к контейнеру и проиндексирует файлы
2. Настройка Path Mappings
Settings→PHP→Servers- Добавьте сервер:
- Name: bitrix-docker
- Host: localhost (или ваш домен, например dev.bx)
- Port: 8588
- Debugger: Xdebug
- Внизу в Path mappings укажите:
Local: /путь/к/data/www → Remote: /opt/www/
3. Настройка Debug
Settings→PHP→Debug:
- Debug port: 9003
- Can accept external connections
Settings→PHP→Debug→Xdebug:
- Filter debug connection by IDE key
- IDE key:
PHPSTORM
4. Создайте конфигурацию запуска
Run→Edit Configurations→+→PHP Remote Debug- Настройки:
- Name:
Bitrix Docker Debug - Server: выберите созданный сервер
bitrix-docker - IDE key:
PHPSTORM
- Примените и закройте
В PhpStorm включите "Start Listening for PHP Debug Connections" (иконка 🐞 в панели)
Поставьте брейкпоинт в коде и откройте страницу — отладка должна сработать!
Docker
Для удобного управления контейнерами в графическом интерфейсе рекомендуется использовать Docker Desktop. Он доступен для Windows, Linux и macOS.
Документация по установке:
Docker Desktop on Windows: https://docs.docker.com/desktop/setup/install/windows-install/Docker Desktop on Linux: https://docs.docker.com/desktop/setup/install/linux/Docker Desktop on Mac: https://docs.docker.com/desktop/setup/install/mac-install/
Управление контейнерами
Для оркестрации контейнеров используется Docker Compose. Все команды выполняются из корневой директории проекта.
Основная команда для пересборки и перезапуска:
docker compose down && docker compose up -d
Полезные команды Docker
- Запустить все контейнеры и оставить их работать в фоне:
docker compose up -d
- Отобразить список контейнеров и их статус:
docker compose ps
- Показать логи сразу всех контейнеров:
docker compose logs
- Показать лог определенного сервиса-контейнера:
docker compose logs redis
- Перезапустить определенный контейнер:
docker compose restart nginx
- Перезапустить все контейнеры:
docker compose restart
- Остановить все контейнеры:
docker compose stop
- Остановить все контейнеры, удалить их:
docker compose down
- Остановить все контейнеры, удалить их и удалить все тома этих контейнеров:
docker compose down -v
- Зайти в sh-консоль определенного контейнера, например nginx:
docker compose exec nginx sh