Files
2026-05-20 15:42:32 +03:00

234 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Docker-окружение для Bitrix (env-docker)
Этот проект предназначен для быстрого развертывания локального окружения для разработки на Битрикс с использованием Docker. В основе лежит репозиторий https://github.com/bitrix-tools/env-docker
## Директории
- [mysql](data/mysql) — файлы баз данных MySQL. Эта папка привязана к контейнеру через bind mount, поэтому данные сохраняются даже после удаления контейнеров.
- [www](data/www) — файлы проектов (скрипты Битрикс). Это основной рабочий каталог для разработки.
## Навигация
* [Инициализация проекта](#инициализация-проекта)
* [Настройка среды разработки](#настройка-среды-разработки)
* [Настройка доступа к сайту](#настройка-доступа-к-сайту)
* [Настройка Xdebug](#настройка-xdebug)
* [Docker](#docker)
* [Управление контейнерами (Docker Compose)](#управление-контейнерами)
## Инициализация проекта
1. Создайте директорию для вашего проекта и перейдите в неё.
2. Скачайте и распакуйте архив с репозиторием
```bash
https://g.it4gaz.ru/internal-automation/b24-docker
```
3. Запустите docker
4. В [www](data/www) Необходимо добавить папки:
- `вся публичная часть` - берем из репозитория с публичкой
- `/bitrix` - из копии б24 (архивировать только ядро, с БД)
- `/upload` - из копии б24 (если создается полная копия)
Взять их можно из полной копии проекта (склеить и распаковать полный архив)
```bash
# Склеить архив и сразу распаковать (для не сжатых архивов):
cat *$(ls -v *tar.*) | tar xf -
# Склеить архив и распаковать (для сжатых архивов):
cat *$(ls -v *tar.gz*) | tar xzf -
```
Далее перенести необходимые директории
5. После того как все директории перенесли в www, восстанавливаем через restore.php
Подключение к БД
```text
хост b24_mysql
имя бд - любое, с отмеченной галочкой создать
пользователь - root
пароль из - .env_sql
```
## Настройка среды разработки
Настройки вносятся **до первого запуска контейнеров**
1. Скопируйте файлы
```bash
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
```
2. Заполните их значениями для вашей среды разработки:
**Пароль к базам данных MySQL**
Пароль для суперпользователя `root` задается в файле `.env_sql`:
```dotenv
MYSQL_ROOT_PASSWORD="..."
```
**Секретный ключ для Push-сервера**
Ключ используется для подписи соединений между клиентом и Push-сервером. Он задается в файле `.env_push`, можно использовать уже установленное значение
```dotenv
PUSH_SECURITY_KEY=...
```
**Часовой пояс (timezone)**
> Часовой пояс для контейнеров задается в двух местах
1. Файл `.env`. (основная настройка для большинства сервисов). Значение задано как:
```dotenv
TZ=Europe/Moscow
```
2. Файл `confs/php84/etc/php/conf.d/timezone.ini` (настройка для PHP):
```ini
date.timezone = Europe/Moscow
```
После выполнения этих шагов можно переходить к запуску контейнеров.
## Настройка доступа к сайту
Для macOS. Сайт использует порты **8560 (HTTP)** и **8561 (HTTPS)**. Эти настройки указаны в файле `docker-compose.yml`.
Если порты заняты, можно указать другие в `docker-compose.yml`.
### Предварительная настройка (общая для обоих способов)
Как открывать сайт:
1) через `127.0.0.1:8560`
2) `b24.local:8560`
1. Добавьте запись в файл `/etc/hosts`. Это свяжет доменное имя с локальным компьютером.
```bash
sudo nano /etc/hosts
```
Добавьте строку:
```text
127.0.0.1 b24.local
```
2. **(Опционально)** Создайте тестовый файл.
Для проверки работы создайте в директории [data/www](data/www) файл `index.php` с содержимым:
```php
<?php
phpinfo();
```
3. Если настраиваете другой хост, поменяйте его в [confs/nginx/conf.d/default.conf](confs/nginx/conf.d/default.conf)
## Настройка Xdebug
### Настраиваем PhpStorm
#### 1. Настройка PHP Interpreter
1. `Settings` → `PHP` → `CLI Interpreter` → `+` → `From Docker, Vagrant, WSL...`
2. Выберите `Docker Compose`
3. Укажите путь к `docker-compose.yml` и сервис `php`
4. `PhpStorm` подключится к контейнеру и проиндексирует файлы
#### 2. Настройка Path Mappings
1. `Settings` → `PHP` → `Servers`
2. Добавьте сервер:
* Name: bitrix-docker
* Host: localhost (или ваш домен, например dev.bx)
* Port: 8588
* Debugger: Xdebug
3. Внизу в Path mappings укажите:
```text
Local: /путь/к/data/www → Remote: /opt/www/
```
#### 3. Настройка Debug
1. `Settings` → `PHP` → `Debug`:
* Debug port: 9003
* Can accept external connections
2. `Settings` → `PHP` → `Debug` → `Xdebug`:
* Filter debug connection by IDE key
* IDE key: `PHPSTORM`
#### 4. Создайте конфигурацию запуска
1. `Run` → `Edit Configurations` → `+` → `PHP Remote Debug`
2. Настройки:
* Name: `Bitrix Docker Debug`
* Server: выберите созданный сервер `bitrix-docker`
* IDE key: `PHPSTORM`
3. Примените и закройте
В 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`. Все команды выполняются из корневой директории проекта.
Основная команда для пересборки и перезапуска:
```bash
docker compose down && docker compose up -d
```
<details><summary>Полезные команды Docker</summary>
* **Запустить все контейнеры и оставить их работать в фоне:**
```bash
docker compose up -d
```
* **Отобразить список контейнеров и их статус:**
```bash
docker compose ps
```
* **Показать логи сразу всех контейнеров:**
```bash
docker compose logs
```
* **Показать лог определенного сервиса-контейнера:**
```bash
docker compose logs redis
```
* **Перезапустить определенный контейнер:**
```bash
docker compose restart nginx
```
* **Перезапустить все контейнеры:**
```bash
docker compose restart
```
* **Остановить все контейнеры:**
```bash
docker compose stop
```
* **Остановить все контейнеры, удалить их:**
```bash
docker compose down
```
* **Остановить все контейнеры, удалить их и удалить все тома этих контейнеров:**
```bash
docker compose down -v
```
* **Зайти в sh-консоль определенного контейнера, например nginx:**
```bash
docker compose exec nginx sh
```
</details>