Если вы были в Интернете где-то за последние 2 года, вы могли заметить, что Докер становится чрезвычайно популярным. Если вы когда-либо пробовали Docker*, то, вероятно, знаете, что это не зря. Докер отличный. Основная концепция действительно довольно проста: Docker использует Linux Containers (LXC), чтобы вы могли запускать и развертывать приложения в контролируемой среде. Вы можете начать с одного из 13 000+ доступных базовых образов, установить пакеты или иным образом настроить что-либо, как вам нравится, чтобы запустить ваше приложение, сохранить свою конфигурацию в виде образа Docker, а затем запустить его в любое время. , на любой машине, в любом месте.

Этот подход имеет много преимуществ:

  • Контейнеры Docker переносимы. После того, как ваше приложение будет работать в контейнере Docker, вы сможете запускать этот контейнер практически на любом компьютере, включая среды Windows и OS X. Вы даже можете запускать свои Dockerized-приложения на платформах Amazon EC2, Rackspace и Google Cloud.
  • Docker отделяет приложения от инфраструктуры. Определение ваших приложений с точки зрения базовых образов Docker означает, что их среды предсказуемы, что упрощает управление и анализ.
  • Запускать приложения в контейнерах полезно, потому что они изолированы.Изолировать их — это хорошо.
  • Отсутствие необходимости повторно настраивать среду приложения – это здорово.Необходимость повторять действия – это плохо.

Здесь, в Adzerk, мы используем Docker для развертывания сервисов, написанных на Clojure, в Amazon EC2 / Elastic Beanstalk. Наш рабочий процесс для разработки этих сервисов также включает Boot, фантастическую платформу сборки, которая позволяет вам писать задачи, связанные с разработкой и развертыванием ваших приложений Clojure. На самом деле у нас есть задача boot-beanstalk, которая автоматизирует процесс докеризации приложений и их развертывания в Elastic Beanstalk. Это практически так же просто, как написать Dockerfile и запустить пару задач Boot из командной строки. Поскольку Dockerfile является частью репозитория проекта каждого приложения, среда приложения становится частью самого проекта! Это круто.

Наш рабочий процесс создания Dockerized-сервисов, настроенных для запуска с помощью задач загрузки, становится настолько распространенным, что мы только что отправили официальный™ boot-clj Docker-образ в Docker Hub! Самое замечательное в этом то, что он позволяет любому использовать Boot в изолированной среде, если в его системе установлен Docker, без необходимости выполнять какую-либо установку или настройку Java или Boot.

Если у вас установлен Docker, попробуйте:

docker run -i adzerk/boot-clj repl

Это запустит Clojure REPL в изолированной среде Linux (построенной поверх базового образа Debian Wheezy Docker) с предустановленной Oracle Java 8 и последней версией Boot.

В следующий раз, когда вы захотите создать веб-приложение в Clojure, вы можете подумать о том, чтобы сделать его контейнером Docker — теперь вы можете получить контейнер Docker с функциональной средой Debian и последней версией Boot, просто поставив FROM adzerk/boot-clj вверху вашего Dockerfile!

  • А если нет, вы можете подумать о том, чтобы попробовать — это весело!

Эта запись была первоначально опубликована Дэйвом Ярвудом в Техническом блоге Adzerk в марте 2015 года. Вы можете узнать больше о Adzerk здесь.