CMS Битрикс — одна из самых популярных систем управления контентом в русскоязычном сегменте, предлагающая богатый функционал для создания интернет-магазинов, корпоративных сайтов и порталов. Её установка в Docker-контейнер открывает новые возможности: вы получаете изолированную среду, где все зависимости упакованы в единый пакет, что исключает конфликты версий и упрощает развертывание.
В этой статье мы подробно разберем каждый этап настройки — от подготовки окружения на Ubuntu до финального запуска полнофункционального сайта. Вы узнаете, как правильно настроить контейнеры, организовать структуру проекта и оптимизировать конфигурацию для стабильной работы Битрикс в Docker-окружении.
Подготовка окружения Ubuntu
Прежде чем развертывать Битрикс в Docker, необходимо подготовить операционную систему Ubuntu. На этом этапе мы устанавливаем и настраиваем сам Docker, а также вспомогательный инструмент docker-compose. Это основа, которая позволит создавать и управлять изолированными контейнерами.
Мы последовательно выполним команды для обновления системы, установки Docker из официального источника, добавим текущего пользователя в нужную группу для удобства работы и закрепим результат установкой docker-compose. Эти шаги гарантируют, что среда готова к развертыванию нашего проекта.
# Обновляем пакеты sudo apt update && sudo apt upgrade -y # Устанавливаем Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # Добавляем пользователя в группу docker sudo usermod -aG docker $USER # Устанавливаем docker-compose sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # Перезагружаем сессию newgrp docker
Структура проекта
Структура проекта — это фундамент для удобной работы и поддержки. Мне нравится, когда структура проекта позволяет разделить ответственность между компонентами и сделать конфигурацию прозрачной.
Корневая директория содержит основные файлы управления:
docker-compose.yml— центральный файл, описывающий все сервисы.env— хранит конфиденциальные данные и настройки.gitignore— исключает служебные файлы из git репозитория
Вложенные папки группируют конфигурации по типам сервисов:
nginx/— конфигурация веб-сервера и виртуальных хостовphp/— настройки PHP и Dockerfile для сборки кастомного образаmysql/— скрипты инициализации базы данныхwww/— корневая директория сайта, где будет размещен код Битрикс
Такая структура позволяет легко находить нужные настройки, масштабировать проект и работать в команде.
bitrix-project/
├── docker-compose.yml
├── .env
├── .gitignore
├── nginx/
│ └── nginx.conf
├── php/
│ ├── Dockerfile
│ └── bitrix.ini
├── mysql/
│ └── initdb/
└── www/
└── (здесь будет Битрикс)
Конфигурация Docker
В файле docker-compose.yml мы описываем всю архитектуру нашего приложения: три сервиса (Nginx, PHP-FPM и MySQL), их настройки и взаимосвязи.
Ключевые моменты конфигурации:
- Nginx: работает на порту из переменной
${NGINX_PORT}, проксирует PHP-запросы к контейнеруphp, имеет доступ к коду сайта и своей конфигурации - PHP: собирается из кастомного
Dockerfile, получает переменные окружения для подключения к БД - MySQL: создает базу и пользователя при первом запуске, сохраняет данные в томе
mysql_data
./docker-compose.yml:
services:
nginx:
image: nginx:alpine
ports:
- "${NGINX_PORT}:80"
volumes:
- ./www:/var/www/html
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
restart: unless-stopped
networks:
- bitrix-network
php:
build: ./php
volumes:
- ./www:/var/www/html
environment:
- MYSQL_HOST=mysql
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
depends_on:
- mysql
restart: unless-stopped
networks:
- bitrix-network
mysql:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
- ./mysql/initdb:/docker-entrypoint-initdb.d
networks:
- bitrix-network
restart: unless-stopped
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 20s
retries: 10
volumes:
mysql_data:
driver: local
networks:
bitrix-network:
driver: bridge
Dockerfile — это инструкция для сборки кастомного образа контейнера. В нашем случае мы создаем образ на основе официального php:8.1-fpm и донастраиваем его под требования Битрикс.
В этом файле мы последовательно выполняем несколько важных действий: устанавливаем системные зависимости, необходимые для работы Битрикс (git, unzip, библиотеки для работы с изображениями и ZIP-архивами), затем добавляем нужные расширения PHP через docker-php-ext-install. Особое внимание уделяем модулям для работы с MySQL (pdo_mysql, mysqli) и графикой (gd), а также включаем opcache для ускорения работы PHP. В конце устанавливаем Composer для управления зависимостями и задаем рабочую директорию.
./php/Dockerfile:
FROM php:8.1-fpm
# Устанавливаем системные зависимости
RUN apt-get update && apt-get install -y \
git \
unzip \
libzip-dev \
libpng-dev \
libonig-dev \
&& docker-php-ext-install \
zip \
pdo_mysql \
mysqli \
gd \
opcache
# Включаем необходимые модули PHP
RUN docker-php-ext-enable opcache
# Устанавливаем Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
Управление параметрами через .env
Файл .env — это конфигурационный файл, в котором мы храним чувствительные данные и настройки нашего проекта в виде переменных окружения. В нем мы определяем пароли, имена базы данных, порты и другие параметры, которые могут меняться в разных средах (разработка, тестирование, продакшен).
В docker-compose.yml мы используем синтаксис ${VARIABLE_NAME} для подстановки значений из .env файла. Docker Compose автоматически загружает переменные из этого файла при запуске, что позволяет нам иметь единую конфигурацию контейнеров с изменяемыми параметрами.
Крайне важно добавить .env в .gitignore, чтобы исключить его из Git-репозитория. Этот файл содержит пароли и другие конфиденциальные данные, которые не должны попадать в систему контроля версий по соображениям безопасности. Вместо этого в репозиторий стоит положить файл .env.example с примером структуры, но без реальных значений.
.env:
# Настройки MySQL MYSQL_ROOT_PASSWORD=secure_root_password MYSQL_DATABASE=bitrix_db MYSQL_USER=bitrix_user MYSQL_PASSWORD=secure_password # Порт Nginx NGINX_PORT=8080
.gitignore:
.env .idea .vscode www/upload/ www/bitrix/backup/ mysql_data/
Настройка сервера
В файле nginx.conf мы настраиваем виртуальный хост веб-сервера Nginx, который будет обслуживать наш сайт. Мы указываем корневую директорию с файлами Битрикс, настраиваем обработку PHP-запросов с перенаправлением их в PHP-FPM контейнер, а также устанавливаем правильные правила для ЧПУ через urlrewrite.php и ограничиваем максимальный размер загружаемых файлов, что особенно важно для административной части Битрикс.
./nginx/nginx.conf:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
client_max_body_size 100M;
}
В файле bitrix.ini мы увеличим лимиты памяти и времени выполнения скриптов, установим достаточные размеры для загрузки файлов, а также активируем и настроим opcache — все эти параметры учитывают повышенные требования CMS к ресурсам и необходимы для стабильной работы административной панели и обработки тяжелых операций.
./php/bitrix.ini:
memory_limit = 256M max_execution_time = 60 upload_max_filesize = 100M post_max_size = 100M opcache.enable=1 opcache.memory_consumption=256
Установка CMS Bitrix
Мы скачиваем официальный установочный скрипт bitrixsetup.php в папку www. После загрузки файла важно установить рекурсивно корректные права доступа (755) на всю папку www, чтобы веб-сервер мог без ограничений работать с файлами Битрикс в процессе установки и дальнейшей эксплуатации.
# Скачиваем установщик Битрикс в папку www cd www wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php # Устанавливаем правильные права на всю папку www chmod -R 755 .
Запуск Docker
# Запускаем контейнеры docker-compose up -d # Проверяем работу docker-compose ps
Откройте в браузере: http://localhost:8080
Следуйте инструкциям установщика Битрикс:
- Хост БД:
mysql - Имя БД:
bitrix_db(из .env) - Пользователь:
bitrix_user(из .env) - Пароль:
secure_password(из .env)
Добавление в git репозиторий
# Инициализируем репозиторий git init # Добавляем файлы конфигурации git add docker-compose.yml php/Dockerfile nginx/nginx.conf .gitignore # Коммит git commit -m "Initial Bitrix Docker setup" # Добавляем удаленный репозиторий git remote add origin your-repository-url git push -u origin main
Заключение
Вы успешно развернули Битрикс в Docker-окружении. Теперь ваш проект:
- Переносится между системами без изменений
- Имеет четкую структуру конфигурации
- Готов к работе в команде и дальнейшему развитию
Для повседневной работы используйте docker-compose up -d для запуска и docker-compose down для остановки. Все данные БД сохраняются в томе mysql_data.


Добавить комментарий