Рубрики
Uncategorized

Докер для развития рельсов

Как развивать Ruby on Rails Application в докеренной среде

Автор оригинала: Victor H.

Развитие Ruby on Rails Applications в крупных командах может быть расстраиваться, потому что члены команды используют разные оперативные системы, языки, часовые появления и многое другое.

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

Почему?

  • Ваша команда будет иметь стабильную среду развития
  • Развитие Это зеркало производства
  • Нет ошибок, вызванных окружающей средой
  • Потому что Windows XD
  • Новые члены команды будут любить это!

Как?

Давайте сломаем это на несколько разделов, мы будем охватывать Everting, необходимое для создания приложений Badass Rails в докеренной среде.

Рельсы в докеренном контейнере

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

Применение рельсов

Давайте начнем с создания новых приложений Rails.

Я предполагаю, что у вас есть рельсы 5.2, если нет, пожалуйста, следуйте одному из этого Гиды Отказ

$ Rails новый myapp —skip-test —skip -пучок

Docker Image

Теперь, когда у нас есть приложение Rails, давайте создадим простой Dockerfile в наших рельсах применение корень . Это поможет нам запустить наши рельсы приложения в Docker.

Dockerfile.

FROM ruby:2.5
RUN apt-get update -yqq
RUN apt-get install -yqq --no-install-recommends nodejs
COPY . /usr/src/app/
COPY Gemfile* /usr/src/app/
WORKDIR /usr/src/app
RUN bundle install

Линия # 1 Устанавливает Ruby 2.5 в качестве версии Ruby для нашего пользовательского образа докера Линия # 2 Обновите список пакетов Линия # 3 Установите Node.js (необходимо для трубопровода активов) Линия # 4 Скопируйте файлы приложений Rails из нашего локального каталога в контейнер Линия # 5 Кэширование Gemfile Линия # 6 Устанавливает рабочий каталог для Docker Image Линия # 7 Устанавливает драгоценные камни Ruby

Пожалуйста, убедитесь, что вы находитесь в приложении Rails корень каталог.

$ Docker Build.

...
Removing intermediate container 487d39dad5ff
 ---> c2183f884d23
Successfully built c2183f884d23

Посмотрите на Пользовательский идентификатор изображения (C2183F884D23) Потому что мы будем использовать его следующим. Ваш идентификатор будет отличаться от курса Отказ

Теперь мы должны иметь возможность перечислить все наши доступные документы докера.

$ docker изображения

REPOSITORY          TAG                  IMAGE ID            CREATED              SIZE
                             c2183f884d23        About a minute ago   381MB

Как вы можете видеть, что пользовательское изображение докера доступно.

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

Бегущие рельсы

Чтобы получить приложение вверх и запустить, мы выполним следующую команду, которая в основном говорит «Запустите Contentiчик из нашего изображения (C2183F884D23), а затем запустите Rails S -B 0.0.0.0 внутри него». -B говорит нашим серверу Rails, чтобы связать все IP-адреса, а не просто localhost.

$ Docker Run -P 3000: 3000 C2183F884D23 Rails S -B 0.0.0.0

Рельсы серверы загружаются,

=> Booting Puma
=> Rails 5.2.0 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.5.1-p57), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000

Посетить localhost: 3000 И вы должны увидеть рельсы приветствия. Ура! Ты на рельсах! .

Улучшить изображение докера

Используя пользовательский идентификатор изображения в качестве ссылки, чтобы начать наши рельсы приложение вообще не круто, потому что это не легко запомнить этот номер, давайте ярлык Это изображение так легко запомнить:

$ docker tag c2183f884d23 приложение

Если мы перечислим наш документ докера:

REPOSITORY    TAG    IMAGE ID    CREATED    SIZE
app           latest      c2183f884d23        5 days ago          1.03GB

Вы можете использовать теги для версии вашего пользовательского образа докера. О пользователе Команда Docker Tag здесь Отказ

С новым названием Docker Image приложение Мы можем легко запустить приложение Rails.

$ Docker Run-Prons 3000: 3000 Rails S-B 0.0.0.0

Обратите внимание, что мы больше не используем ID изображения Docker, но вместо этого именем тега.

Теперь давайте добавим команду по умолчанию на изображение, используя CMD:

Dockerfile.

FROM ruby:2.5
RUN apt-get update -yqq
RUN apt-get install -yqq --no-install-recommends nodejs
COPY . /usr/src/app/
COPY Gemfile* /usr/src/app/
WORKDIR /usr/src/app
RUN bundle install
CMD ["rails", "s", "-b", "0.0.0.0"]

Есть несколько файлов, которые мы можем игнорировать в нашем образе докера, используя .dockerignore И не стесняйтесь добавлять больше здесь по мере необходимости:

.Dockerignore.

.git
.gitignore
log/*
tmp/*

Тогда давайте восстановим образа докера с новой командной инструкцией CMD:

$ docker build -t приложение.

Начните приложение Rails без Рельсы S -B 0.0.0.0 Используя новое имя тега приложение :

$ docker run -p 3000: 3000 приложение

До сих пор мы покрывали Dockerfile , .dockerignore и Docker Tag Отказ Далее мы перейдем к Docker Compose!

Качалка с docker compose

С Docker Composeyou опишите каждое из ваших услуг приложений.

Представляя Docker-Compose.yml.yml.yml

version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/usr/src/app
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"

Мы удалим CMD [«Rails», «S», «-B», «0,0.0,0»] линия от нашего Dockerfile Так как мы работаем ту же команду из Docker-Compose.yml Отказ

Этот шаг очень важен, так как мы не сделаем это, мы могли бы получить эту ошибку: Сервер уже работает. Проверьте/usr/src/app/tmp/pids/server.pid

Dockerfile.

FROM ruby:2.5
RUN apt-get update -yqq
RUN apt-get install -yqq --no-install-recommends nodejs
COPY . /usr/src/app/
COPY Gemfile* /usr/src/app/
WORKDIR /usr/src/app
RUN bundle install

Теперь давайте построим изображение Docker с Docker Compose:

$ docker-compose up —build

Наши рельсы приложение is up и работает, благодаря Docker Compose, yay!

Docker Составьте полезные команды

Этот Docker Compose Commands поможет вам во время разработки, и вы будете использовать их каждый день!

Создание, (Re) создает, начинается и прикрепляется к контейнерам для обслуживания:

$ docker-compose up

Списки контейнеров:

$ Docker-Compose PS

Управляющие контейнеры Lifecycle:

$ docker-compose [Старт | Стоп | Убить | Перезапуск | Пауза | SOUPAUE | RM] Сервис

Отображает вывод журнала из услуг.:

$ docker-compose logs [Сервис …]

Запустите произвольные команды в ваших услугах:

$ Docker-Compose Exec Service Command

Запускает одноразовую команду против сервиса.

$ Docker-Compose Run Service [Command]

Восстановление образа докера:

$ Docker-Compose Build [Service …]

Резюме

Мы узнали, как использовать Docker для разработки рельсов, мы охватываем некоторые ключевые концепции, такие как: DockerFile и Docker Compose.

Теперь вы должны быть готовы начать разработку приложений Rails в докеренной среде!

Оригинал: «https://www.codementor.io/@victor_hazbun/docker-for-rails-development-juklgqo36»