Рубрики
Uncategorized

Докурировать синятру микромервис

Как упаковать ваше приложение Sinatra Ruby в контейнере Docker. Помечено Ruby, Docker, DevOps.

Синатра Это наклонная и веселая структура для создания простых веб-приложений и микросервисов в Ruby. Традиционно разработчики развернут на платформу, такую как Heroku или Seal-управляемый сервер. Но что, если ваша команда работает более чем на одном языке и нужен единый способ развертывания вещей в облаке? Это, конечно, отличное использование случая для докера.

Допустим, ваше приложение Sinatra имеет простую структуру:

.
├── Gemfile
├── Gemfile.lock
├── README.md
├── app.rb
├── config.ru
└── spec
    ├── app_spec.rb
    └── spec_helper.rb

Чтобы упаковать его в Docker, создайте Dockerfile :

FROM ruby:2.5

RUN apt-get update -qq && apt-get install -y build-essential

ENV APP_HOME /app
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

ADD Gemfile* $APP_HOME/
RUN bundle install --without development test

ADD . $APP_HOME

EXPOSE 4567

CMD ["bundle", "exec", "rackup", "--host", "0.0.0.0", "-p", "4567"]

Обратите внимание на Run Bundle Установите - Without Test Development линия. Я предполагаю, что вы строите контейнер для целей развертывания, и нам не нужны наши зависимости разработки для этого.

Если вы хотите запустить все задачи разработки и тесты в Docker, у вас есть два варианта:

  1. Соедините все и жить с слегка раздутым контейнером в производстве
  2. Создать Dockerfile.dev и использовать это для разработки и тестирования перед созданием производственного изображения с Dockerfile Отказ

В любом случае, вы можете построить и запустить контейнер на локальном уровне:

$ docker build -t sinatra-demo .
$ docker run-p 80:4567 sinatra-demo
$ curl localhost
> hello world

Это здорово, теперь у нас есть наше приложение, запущенное в стандартном контейнере.

Как мы можем развернуть это? Лучшая платформа для запуска контейнеров Docker сегодня — Kubernetes. Для подробного учета по развертыванию см. В моем другом посте:

CI/CD для микросервисов на Digitalocean Kubernetes

Марко Анастасов · 13 марта 13,19 · 12 мин прочитаны

Оригинал: «https://dev.to/markoa/dockerize-a-sinatra-microservice-29l8»