Место контейнеров в процессе релиза веб-приложений

Alexey Bondarenko
2 min readJan 3, 2018

--

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

Об этапах процесса релиза я писал в статье: “От разработки до релиза”.

Прим. в статье будет упоминаться технология Docker, но она может быть заменена на любую другую технологию контейнеризации (например, Rocket)

Контейнеры

Контейнеры были разработаны как способ изоляции приложения от виртуальной машины на которой они запущены. То есть это еще один слой виртуализации. Не важно под какой системой работает виртуальная машина: на нее ставится система управления контейнерами, которая сглаживает всё и в ней запускается контейнеры.

В результате, то что работает у вас в контейнере локально, с вероятностью 99.99% заработает на другой машине, при условии, что у вас одинаковые контейнер и конфиг.

Процесс релиза

Контейнеры может использоваться как образ системы и как артефакт сборки.

Контейнер — образ системы

Контейнеры часто используются как образ системы в которой вы хотите запускать этапы релиза. В большинстве систем CI вы можете указать в каком контейнере запускать ваши этапы релиза.

Контейнер — артефакт сборки

Вы можете упаковать ваше приложение в контейнер. Этот контейнер будет выступать вашим артефактом сборки. Вы тестируете этот артефакт и сохраняете в хранилище.

Сохранение артефакта

Собранный Docker образ вы можете загрузить в хранилище (Docker Hub или другое). Для этого есть стандартная команда docker push

Развертывание

Собранный контейнер вы можете использовать на этапе развертывания приложения. Для этого вы должны установить на сервер систему запуска контейнеров, настроить доступ к хранилищу и прописать файл конфигурации. Для Docker контейнеров это может быть: Docker Hub – как хранилище, Kubernetes — как система запуска контейнеров, kubernetes config — как файл конфигурации.

Выводы

Контейнеризация помогает сгладить различия в виртуальных машинах. В процессе релиза можно активно использовать контейнеры как систему запуска сборки, а также как непосредственный артефакт сборки.

Важно понимать место контейнеров в процессе разработки, чтобы правильно разделять зоны ответственности.

--

--