Добавить в корзинуПозвонить
Найти в Дзене

Битрикс Docker: история одного владельца, который перестал бояться обновлений

Владелец магазина одежды Иван трижды откладывал переезд на новый сервер. Каждый раз, когда он пытался развернуть копию сайта, что-то шло не так: то PHP-модули не те, то база данных не подключалась. Он уже смирился, что его магазин навсегда привязан к старому VPS с устаревшей ОС. Пока однажды его разработчик не сказал: «Давай попробуем Docker». Иван скептически хмыкнул, но согласился. Через два часа после начала работ магазин работал на новом сервере, а ещё через неделю Иван впервые за два года спокойно обновил ядро. Вот как это было. Мы начали с того, что объяснили Ивану суть: docker контейнер битрикс — это как чемодан, в который сложено всё необходимое для работы магазина. Там и веб-сервер, и PHP с модулями, и настройки. Этот чемодан можно перевозить с сервера на сервер, и внутри всё будет работать одинаково. Мы взяли текущую версию его сайта, написали Dockerfile, где перечислили все нужные пакеты (Apache, PHP 8.1, расширения для работы с изображениями и базой данных), и собрали образ
Оглавление
Магазин на Битрикс, упакованный в Docker-контейнер, работает стабильно
Магазин на Битрикс, упакованный в Docker-контейнер, работает стабильно

Владелец магазина одежды Иван трижды откладывал переезд на новый сервер. Каждый раз, когда он пытался развернуть копию сайта, что-то шло не так: то PHP-модули не те, то база данных не подключалась. Он уже смирился, что его магазин навсегда привязан к старому VPS с устаревшей ОС. Пока однажды его разработчик не сказал: «Давай попробуем Docker». Иван скептически хмыкнул, но согласился. Через два часа после начала работ магазин работал на новом сервере, а ещё через неделю Иван впервые за два года спокойно обновил ядро. Вот как это было.

Docker контейнер битрикс: от идеи до первого запуска

Мы начали с того, что объяснили Ивану суть: docker контейнер битрикс — это как чемодан, в который сложено всё необходимое для работы магазина. Там и веб-сервер, и PHP с модулями, и настройки. Этот чемодан можно перевозить с сервера на сервер, и внутри всё будет работать одинаково. Мы взяли текущую версию его сайта, написали Dockerfile, где перечислили все нужные пакеты (Apache, PHP 8.1, расширения для работы с изображениями и базой данных), и собрали образ. На новом сервере уже был установлен только Docker, и команда docker run подняла магазин за минуту. Иван не поверил своим глазам. Дополнительно мы настроили автоматическое восстановление контейнера, чтобы исключить ручной запуск.

Развертывание битрикс docker: как мы перенесли базу и файлы

Развертывание Битрикс Docker с монтированием томов для данных и конфигураций
Развертывание Битрикс Docker с монтированием томов для данных и конфигураций

Следующим шагом было развертывание Битрикс Docker с сохранением всех данных. Мы подключили базу данных MySQL, запущенную в соседнем контейнере, а папку с загруженными картинками и файлами примонтировали с хоста, чтобы они не исчезали при обновлении контейнера. Настроили docker-compose, чтобы одной командой поднимать и веб-сервер, и базу данных, и Redis для кеширования. Иван оценил, что теперь для создания тестовой копии магазина ему не нужно звать администратора — он просто запускает тот же docker-compose на своём ноутбуке. Это сэкономило кучу времени при тестировании нового шаблона и интеграции с CRM.

Docker для 1с битрикс: решение проблем с обменом и кроном

Интеграция 1С с Битрикс в Docker-контейнере и автоматизация cron-задач
Интеграция 1С с Битрикс в Docker-контейнере и автоматизация cron-задач

Не обошлось без трудностей. Docker для 1с битрикс преподнёс сюрприз: обмен с 1С перестал работать после перезапуска контейнера, потому что временные файлы выгрузки терялись. Мы быстро поправили, добавив volume для папки /upload/1c_exchange. Потом выяснилось, что cron внутри контейнера по умолчанию не запущен, и агенты платформы перестали выполняться. Мы настроили запуск cron через отдельный скрипт в entrypoint. После этих доработок магазин Ивана стал по-настоящему автономным. Теперь он обновляет ядро и модули без страха, потому что всегда может откатиться к предыдущей версии контейнера. А мониторинг контейнеров, который мы добавили, позволяет видеть статус всех сервисов в реальном времени.

Схема Docker-compose Битрикс с контейнерами PHP, MySQL, Redis
Схема Docker-compose Битрикс с контейнерами PHP, MySQL, Redis

Если вы тоже устали от проблем с окружением, попробуйте Docker. А если нужна помощь — мы в «Апельсин Код» соберём образ и настроим всё за вас. Бесплатный аудит текущего сервера: support.orangecode.ru.