<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Managed Kubernetes — разверните готовый кластер за 5 минут →
Вход / Регистрация

Как установить Битрикс в Docker на Ubuntu

5137
8 минут чтения
Средний рейтинг статьи: 5

Инструкция обновлена 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-средах необходимо уделить внимание настройке прав доступа, организации резервного копирования и обеспечению безопасности конфигурационных файлов.

5137
8 минут чтения
Средний рейтинг статьи: 5

Читайте также

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
Комментарии 2
Viktor Krasnov
Viktor Krasnov
12.01.2024, 00:16

Вот еще бесплатное решение: https://gitlab.com/bitrix-docker/server

Александр Мартьянов
Александр Мартьянов
25.03.2024, 09:00

Спасибо!