Инструкция обновлена 10 октября 2025 г.
«1С-Битрикс: Виртуальная машина» (BitrixVM) изначально создавалась под CentOS и была тесно связана с этим дистрибутивом. Но CentOS ушел с рынка, а официальные сборки теперь выходят только под AlmaLinux, Rocky Linux, Oracle Linux и CentOS Stream. Для тех, кто работает на Ubuntu, это означает: ни BitrixVM, ни BitrixEnv официально не подходят.
В данном руководстве мы разберем процесс развертывания «1С-Битрикс» с использованием Docker-контейнеров в среде Ubuntu. Настроим веб-сервер и PHP-FPM, подключим базу данных, установим Bitrix через официальный скрипт и убедимся, что сайт запускается в браузере.
Важно: описанное ниже решение не является полноценной BitrixVM. Мы воссоздаем функциональность виртуальной машины в Docker. Такой подход повторяет ключевые возможности BitrixVM (Nginx, PHP-FPM, MariaDB, настройка окружения), но при этом не зависит от конкретного дистрибутива. При этом мы жертвуем быстродействием Битрикса.
Подготовка окружения
Для запуска Bitrix в Docker на Ubuntu понадобится облачный сервер. Например, можно воспользоваться сервером от Timeweb Cloud — здесь самая бюджетная конфигурация стоит 300 ₽, а доступность составляет 99,98%. Арендуйте сервер и подключитесь к нему через SSH — для работы понадобится доступ к командной строке.
Установите Docker. Это можно сделать с помощью нескольких команд:
curl https://get.docker.com -o get_docker.sh
sh get_docker.sh
После завершения установки можно приступать к конфигурации Docker-инфраструктуры.
Структура проекта
Каталог проекта для Bitrix с компонентами Nginx, PHP-FPM и MariaDB имеет следующую организацию:
project/
docker-compose.yml
nginx.conf
.env
php/
Dockerfile
conf.d/
bitrix.ini
bitrix/
Далее в статье разберем, за что отвечает каждый файл.
Создайте директорию проекта и перейдите в нее. В строке ниже project
— это название директории.
mkdir project && cd $_
Файл конфигурации Docker Compose
Создайте файл docker-compose.yml
— основной элемент проектной архитектуры. В нем определены все необходимые сервисы для функционирования Bitrix. Docker Compose обеспечивает запуск компонентов единой командой, управление зависимостями и централизованное хранение настроек.
Для создания файла и ввода конфигурации используйте текстовый редактор nano:
nano docker-compose.yml
Вставьте в файл шаблон конфигурации:
services:
# Сервис базы данных
db:
image: dockerhub.timeweb.cloud/mariadb:10.11
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- db_data:/var/lib/mysql
# Сервис PHP-FPM
php:
build: ./php
restart: always
volumes:
- ./bitrix:/var/www/html
- ./php/conf.d/bitrix.ini:/usr/local/etc/php/conf.d/bitrix.ini
depends_on:
- db
# Сервис Nginx
nginx:
image: dockerhub.timeweb.cloud/nginx:1.24
restart: always
ports:
- "80:80"
volumes:
- ./bitrix:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
volumes:
db_data:
Выйдите из редактора nano комбинацией клавиш Ctrl + X, а далее нажмите на кнопку Y для сохранения изменений.
Управление параметрами через .env
В docker-compose.yml
пароли и учетные данные не прописываются напрямую, а передаются через переменные окружения из файла .env
. Такой подход повышает безопасность (конфиденциальные данные не хранятся в открытом виде) и упрощает управление настройками. Каждый разработчик может использовать персональный .env
, а для production- и development-сред задавать разные параметры без модификации docker-compose.yml
.
В итоге получается следующий файл .env
:
MYSQL_ROOT_PASSWORD=rootbitrix
MYSQL_DATABASE=bitrix
MYSQL_USER=bitrix
MYSQL_PASSWORD=bitrix
Настройка Nginx
Перейдем к конфигурации файла nginx.conf
. Этот файл определяет правила обработки запросов веб-сервером:
- указывает Nginx прослушивать порт 80 и обрабатывать запросы по адресу
http://localhost
; - определяет корневой каталог
/var/www/html
как место размещения файлов Bitrix; - задает приоритетные индексные файлы
index.php
иindex.html
; - настраивает обработку ошибок 404 через
index.php
(требуется для работы Bitrix); - определяет передачу PHP-запросов в контейнер с PHP-FPM для выполнения.
Вставьте в файл nginx.conf
эту конфигурацию:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Подготовка образа PHP через Dockerfile
Создайте файл Dockerfile
в директории php
. Он необходим для установки всех требуемых модулей PHP, обеспечивающих работу «1С-Битрикс».
Базовый образ php:8.1-fpm
содержит только ядро PHP и менеджер FPM. Для корректной работы Bitrix требуется дополнительный набор расширений: обработка изображений, взаимодействие с СУБД, архивами и XML. В Dockerfile выполняется установка необходимых библиотек и активация модулей PHP.
Файл выглядит так:
FROM dockerhub.timeweb.cloud/php:8.1-fpm
RUN apt-get update && apt-get install -y \
libpng-dev libjpeg-dev libfreetype6-dev libzip-dev libxml2-dev libldap2-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd mysqli opcache zip xml ldap \
&& rm -rf /var/lib/apt/lists/*
Что здесь происходит:
-
мы подключаем библиотеки для работы с изображениями, архивами, XML и LDAP;
-
настраиваем модуль
gd
, чтобы PHP умел работать с картинками в формате JPEG и со шрифтами; -
устанавливаем расширения
gd
,mysqli
,opcache
,zip
,xml
,ldap
, которые требуются Битриксу для корректной работы; -
очищаем кеш пакетов, чтобы образ занимал меньше места.
Конфигурация PHP — bitrix.ini
Стандартные параметры образа PHP не соответствуют требованиям «1С-Битрикс». В отличие от BitrixVM, где настройки предопределены, в Docker их необходимо задавать вручную. Для этого создается файл php/conf.d/bitrix.ini
, который монтируется в контейнер через docker-compose.yml
.
; Ограничения ресурсов
memory_limit = 512M
max_execution_time = 300
max_input_time = 300
; Загрузка файлов
upload_max_filesize = 64M
post_max_size = 64M
; Работа с датой
date.timezone = Europe/Moscow
; Включение сессий
session.save_path = "/tmp"
session.gc_maxlifetime = 1440
; Оптимизация кэша
realpath_cache_size = 4096k
realpath_cache_ttl = 600
; Работа с изображениями (gd, exif)
exif.decode_unicode_motorola = UCS-2LE
exif.decode_unicode_intel = UCS-2LE
exif.decode_jis_motorola = JIS
exif.decode_jis_intel = JIS
Главное преимущество такого подхода в том, что настройки не сбрасываются после перезапуска контейнера. Они всегда остаются одинаковыми для всех членов команды, и их удобно менять прямо в одном файле.
Создание папки bitrix и скачивание BitrixSetup
Осталось подготовить папку для файлов самого Битрикса. В корне проекта создайте директорию bitrix
— именно сюда будут устанавливаться файлы CMS.
mkdir bitrix
Затем скачайте в нее официальный установочный скрипт BitrixSetup:
wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php -O ./bitrix/bitrixsetup.php
Важно: иногда при запуске BitrixSetup появляются ошибки вида Permission denied
. Это значит, что контейнеру не хватает прав на запись в директорию ./bitrix
. Самый быстрый способ решить проблему для локальной разработки — дать полный доступ:
chmod -R 777 ./bitrix
Однако это небезопасный вариант: все пользователи на сервере получат права на запись. Для продакшн-среды рекомендуется правильно настроить владельца и группу файлов (UID/GID или пользователя www-data
). Подробно про права доступа написано в документации.
Запуск контейнеров
После подготовки всех компонентов (docker-compose.yml
, .env
, nginx.conf
, Dockerfile
для PHP и директории bitrix
) запустите проект командой:
docker compose up -d
Флаг -d
обеспечивает фоновый режим работы контейнеров. Система автоматически соберет образ PHP, загрузит образы Nginx и MariaDB, и запустит три сервиса: базу данных, PHP-процессы и веб-сервер.
Проверьте статус контейнеров:
docker compose ps
При успешном запуске откройте в браузере http://localhost/bitrixsetup.php
— вы увидите установочный мастер «1С-Битрикс».
Важный момент: при настройке подключения к базе данных в мастере установки вместо
localhost
укажитеdb
— это имя сервиса MariaDB изdocker-compose.yml
. Внутри Docker-сети контейнеры взаимодействуют по именам сервисов, а не через локальный хост.
Заключение
Использование Docker особенно эффективно для локальной разработки и тестирования благодаря быстрому развертыванию. В production-средах необходимо уделить внимание настройке прав доступа, организации резервного копирования и обеспечению безопасности конфигурационных файлов.
Вот еще бесплатное решение: https://gitlab.com/bitrix-docker/server
Спасибо!