Заказать проект
Оставьте заявку для получения коммерческого предложения.
Заполните форму и мы вышлем Вам предложение в котором решим,
чем можем вам помочь.
Используем Docker для развертывания web-приложения bitrix

Используем Docker для развертывания web-приложения bitrix

22 Августа 2019
Олег Кравпа
Backend Developer
Олег Кравпа
следующая статья

Что такое Docker?

Если описывать простыми словами, то Docker — это инструмент, который позволяет запускать программы в “виртуальной” среде-контейнере. Интуитивно понятно даже по брендированию, что принцип работы сервиса можно сравнить с транспортными контейнерами в реальной жизни. В каждом контейнере можно хранить и запускать набор нужных программ. 

Что же такое контейнер?

Контейнер можно сравнить с виртуальной машиной, которая изолирует процесс для приложения, но, в отличии от виртуальных машин, контейнер не создает такой большой нагрузки на “железо”. Также можно привести пример с “песочницей”, которая изолирует процесс от родительской ОС, но, при этом, не использует ресурсы для эмуляции работы виртуального ПК.

Docker разработан специально для работы в Linux. Контейнерная виртуализация или виртуализация на уровне операционной системы Docker нативно работает только  на этой ОС. На Windows вам понадобится гостевая Linux-система либо специальная минималистичная виртуальная машина с ядром Linux от разработчиков Docker, которая устанавливается из коробки. На официальном сайте есть довольно большая документация по Docker; не будем в нее сильно углубляться, а рассмотрим процесс установки и настройки окружения для работы bitrix на ОС Linux.

Установка

Первым делом нам нужно установить Docker. Для этого будем использовать дистрибутив Ubuntu 18.04.7

Если у вас свежеустановленная система, то необходимо выполнить команду обновления индекса пакетов:

$ sudo apt-get update

На втором шаге устанавливаем пакеты необходимые для работы:

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    Software-properties-common

Добавляем официальный docker GPG-ключ:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Добавляем репозиторий, где расположены пакеты для установки Docker:

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

И наконец набираем команду которая установит сам Docker:

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

Для проверки правильности установки докера можно выполнить команду которая скачает образ и создаст тестовый контейнер hello world:

$ sudo docker run hello-world

Если все установлено правильно мы должны увидеть в окне вот такой текст:

pasted image 0.png

В Docker-мире существуют такие понятия, как образы и контейнеры. Несмотря на то, что они тесно связаны — они отличаются, и в начале изучения Docker часто возникают сложности в понимании этих терминов. Если описывать простыми словами, то образ — это заготовка или эталон, с которого создается контейнер; его нельзя изменять или устанавливать в него программы. Но есть возможность создавать свои образы и хранить их на сайте hub.docker.com, где  его сможет скачать и использовать в своих целях любой пользователь.

Установка Docker-compose

Docker-compose — пакетный менеджер (по аналогии с composer и npm, только у docker — контейнеры), позволяющий описывать необходимую структуру в одном файле (конфиге).

Для его установки нужно выполнить команду:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Установим права на выполнение бинарного файла:

$ sudo chmod +x /usr/local/bin/docker-compose

Проверим его версию:

$ docker-compose --version

Если все сделано правильно, то можно приступить к запуску нашего окружения для разработки.

Запускаем окружение

Сперва клонируем репозиторий, который содержит все необходимые файлы конфигураций.

$ git clone https://github.com/workground/docker-config.git

Перейдем в рабочий каталог:

$ cd docker-config

В файле docker-compose.yml можно установить логин и пароль для mysql, также там содержится много других настроек — их можно оставить по умолчанию. Дальше выполним команду, которая сделает все необходимое для запуска LAMP окружения:

$ docker-compose up

После первого запуска нужно будет подождать пока загрузятся все необходимые образы и установятся все необходимые пакеты. После того как процесс завершится, нужно записать в каталог /docker-config/www файл bitrixsetup.php и можно начинать установку bitrix.

Чтобы узнать ip адрес, на котором работает web-сервер, нужно выполнить команду:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' test_apache_1

Test_apache_1 — это название контейнера, в котором работает апач. У вас он может отличатся и узнать его можно, выполнив в терминале команду docker ps. Перейдем на страницу установки: http://127.22.0.4:8000/bitrixsetup.php. Процесс установки стандартный, только замечу, что адрес сервера mysql нужно установить — mysql. Это название контейнера в нашем файле конфигурации.

pasted image 0 (1).png

pasted image 0 (2).png

Сравнение BitrixVM и Docker

На сайте 1c-bitrix в разделе “Скачать” есть уже готовые образы для виртуальных машин в разных форматах. Ниже на странице есть уже готовый скрипт bitrix-env.sh для установки на чистую систему, который позволяет за считанные минуты установить и настроить окружение для CentOS 6, CentOS 7 с нужным набором программ. 

Если взять Docker, то он больше похож на конструктор, в котором из отдельных блоков можно собрать и настроить нужный набор программ. Например можно скачать чистый образ CentOS и внутри него запустить скрипт bitrix-env.sh, который установит и настроит набор программ внутри изолированного окружения в контейнере. Он будет работать в Docker-контейнере. 

Docker нужно рассматривать, как альтернативу виртуальной машине, но в отличее от нее тут можно распределять программы по разным контейнерам, что позволяет при обновлении избежать конфликтов. Например, если нужно обновить версию php, это может вызвать конфликт зависимостей. А если использовать Docker, будет достаточно подключить новый контейнер и внутрь него установить новую версию php. 

Из этого следует, что Docker скорее выступает полезным дополнением для окружения bitrixVM, которое нужно использовать в зависимости от поставленных задач. И сравнивать их не совсем корректно.

Основные преимущества Docker 

  • Простота использования. Основанная на контейнерах Docker-платформа позволят легко портировать полезную нагрузку. Docker-контейнеры могут работать как на реальной локальной машине или машине в датацентре, так и на виртуальной машине в облаке. Портируемость и легковесная природа Docker позволяет легко динамически управлять нагрузкой. Можно использовать Docker, чтобы развернуть или погасить ваше приложение или сервисы. Скорость Docker позволяет делать это почти в режиме реального времени. 

  • Скорость работы. Docker-контейнеры легковесны и быстры. Можно создать и запустить Docker-контейнер за секунды, в отличии от виртуальных машин, каждый раз запускающих полноценную виртуальную ОС. 

  • Модульность и масштабируемость. Docker позволяет легко разделять функциональность приложения в отдельные контейнеры. Например, можно запускать базу данных Postgres в одном контейнере, хранилище Redis в другом, в то время как приложение Node.js находится в третьем. Это позволит легко масштабировать и обновлять компоненты приложения независимо друг от друга.

Недостатки использования docker

  • Безопасность. Проблема состоит в том, что контейнеризованные приложения выпускает кто угодно. И среди разработчиков всегда найдутся «плохие парни». Если, к примеру, вы или ваши сотрудники достаточно ленивы, чтобы запустить на сервере первый попавшийся контейнер, то вполне можете получить трояна.

  • Сложность первой настройки. Для использования Docker нужно устанавливать дополнительные программы такие как Docker и Docker-compose, что не всегда проходит без проблем. Также нужно изучить большое количество команд для настройки и запуска контейнеров.

  • Работа только в Linux. Для работы в таких ОС как Windows и MacOS нужно устанавливать виртуальную машину, в которую нужно уже установить docker. 

Заключение

В этой статье мы рассмотрели установку и запуск окружения Docker для работы с bitrix, и это только небольшая часть возможностей что предоставляет Docker. Контейнеризация Docker имеет свои достоинства и недостатки. В любом случае, преимущество использования контейнеров должно решаться исходя из поставленной задачи. Для некоторых задач без Docker не обойтись, а для других — он попросту лишний.

Need help?

Ask a question.

Chat Now
Записаться На Консультацию
Записаться На Консультацию
Мы свяжемся
с вами
в течении
10 минут
laptop
Мы свяжемся с вами в течении 10 минут