Рубрики
Uncategorized

Развернуть Rails и Sidekiq для Render.com, используя YAML

Render.com — это новая платформа AS-A-A-Service, представляющая собой отличную альтернативу Heroku. Скорее, чем… Теги от рельсов, рендеринга, DevOps, Yaml.

Render.com Это новая платформа, а также предлагающаяся услуга, которая является великой альтернативой Heroku. Вместо того, чтобы думать с точки зрения «приложений», как делает Heroku; У рендера есть концепция «Услуги». Итак, приложение вашего рельсов будет услугой; Ваша база данных будет другая служба; Redis будет еще одна услуга и т. Д. Услуги также могут быть потенциально совместно между несколькими приложениями.

Любые нетривиальные рельсы приложение в наши дни нужны Фон задания и популярные рамки для этого — Sidekiq Отказ Sidekiq использует Redis в качестве хранилища данных. Это означает, что нам нужно развернуть 4 сервиса для рендера для запуска нашего приложения:

  1. Rails Web Service.
  2. Sidekiq фоновый сервис
  3. PostgreSQL База данных
  4. Редис

Render поддерживает «инфраструктуру как код», поэтому мы собираемся определить эти услуги в файле yaml, чтобы он отслеживал Гит наряду с нашим кодом приложения. Срежи Ruby поддерживаются в результате которых поддерживаются, и у них также есть управляемое предложение PostgreSQL базы данных. Для чего-либо еще нам нужно использовать документ Docker, поэтому использование Redis — крошечный бит.

На момент написания, Render работает над управляемым Redis, предлагающим Отказ Когда это в прямом эфире, это должно быть легче развернуть и управлять службой Redis.

Render поддерживает 3 типов обслуживания:

  • Веб-сервис [ подвергается интернету через HTTPS. на порту 80 Несомненно
  • Частное обслуживание [ подвергается только всем вашим другим услугам Несомненно
  • Фоновой рабочий [ не подвергается воздействию сети вообще Несомненно

Рельсы на визуализации

Мы разверним веб-приложение Rails в качестве веб-службы, работник Sidekiq как фоновый работник и Redis в качестве частного обслуживания, используя Визуализация поддерживается Dockerfile Отказ

Во-первых, нам нужно обновить нашу базу данных и конфигурации PUMA для производства. Следуйте за Этот раздел из Руководства по развертыванию рельсов Render а затем вернуться к этому посту.

Затем нам нужно добавить сценарий сборки, который будет запущен, когда приложение развернуто. Создайте файл под названием Render-build.sh В вашем Bin каталог и добавить следующее содержимое:

#!/usr/bin/env bash
# exit on error
set -o errexit

bundle install
bundle exec rake assets:precompile
bundle exec rake assets:clean
bundle exec rake db:migrate

Этот скрипт также из визуализации Руководство по развертыванию рельсов Отказ

Убедитесь, что скрипт исполняется исполняемым путем выполнения следующей команды:

chmod a+x bin/render-build.sh

Наконец, мы создаем нашу спецификацию инфраструктуры. В вашем Root Project создайте файл под названием Render.yaml и вставить следующее:

services:
  - type: web
    name: myapp-web
    env: ruby
    region: frankfurt # or oregon
    plan: starter
    numInstances: 1
    buildCommand: ./bin/render-build.sh
    startCommand: domains:
      - example.com # replace with your domain name
    envVars:
      - key: DATABASE_URL
        fromDatabase:
          name: myapp-db
          property: connectionString
      - key: REDIS_HOST
        fromService:
          name: myapp-redis
          type: pserv
          property: hostport
      - key: RAILS_MASTER_KEY
        sync: false

  - type: worker
    name: myapp-sidekiq
    env: ruby
    region: frankfurt # or oregon
    plan: starter
    buildCommand: bundle install && bundle exec rake assets:precompile
    startCommand: envVars:
      - key: DATABASE_URL
        fromDatabase:
          name: myapp-db
          property: connectionString
      - key: REDIS_HOST
        fromService:
          name: myapp-redis
          type: pserv
          property: hostport
      - key: RAILS_MASTER_KEY
        sync: false

  - type: pserv
    name: myapp-redis
    env: docker
    region: frankfurt # or oregon
    repo: https://github.com/render-examples/redis.git
    numInstances: 1
    disk:
      name: myapp-redis-data
      mountPath: /var/lib/redis
      sizeGB: 1

databases:
  - name: myapp-db
    plan: starter
    region: frankfurt # or oregon

Полная спецификация YAML Render — Доступен здесь Отказ

Большая часть вышеуказанного файла должна быть самоснабжением. Я рекомендую изменять имена сервисов на что-то, что конкретно для вашего приложения. Единственный сложный бит предоставляет Redis_url Окружающая среда переменная для наших железнодорожных и сервисов Sidekiq. В отличие от PostgreSQL, который является управляемым сервисом, Redis — это общее частное обслуживание; Таким образом, единственное имя и порт хоста предоставляется нам в переменных среда на платформе Render. Это означает, что нам нужно добавить Redis:// Директива протокола к URL на нашем собственном.

Я обнаружил, что самый простой способ сделать это, было интерполировать Redis_Host Переменная окружающей среды, которая Render дает нам создать Redis_url Переменная в startcommand для наших услуг. Вы можете, как это сделано в рельсах и услугах Sidekiq выше.

Если вы запустите консоль Rails в приборной панели Render, вам нужно будет вызывать его, используя Redis_URL = "Redis://$ {Redis_host}" Bundle Exec Rails Console В противном случае процесс консоли не сможет найти службу Redis.

И, наконец, все, что нам нужно сделать, это подключить этот файл YAML для рендера. Перейти к приборной панели Render, нажмите Новый В правом верхнем углу и выберите План Отказ

Следуйте инструкциям на экране, чтобы подключить репозиторий, и вы должны быть хорошими, чтобы пойти!

Заключение

Я использую вышеуказанный подход в моем приложении: Scattergun Отказ Пока я действительно доволен этим. Я взволнован, чтобы увидеть, какая команда Render в магазине на будущее и лично я планирую использовать их для всех моих проектов в обозримом будущем.

дальнейшее чтение

Scattergun — это самый простой способ собрать адреса электронной почты на вашей посадочной странице и отправлять электронные письма в свой список рассылки. Начните бесплатно Действительно

Оригинал: «https://dev.to/ayushn21/deploy-rails-and-sidekiq-to-rendercom-using-yaml-346»