Это вторая часть Развертывать Рельсы в Amazon ECS сообщение. Это часть более широкой серии называется Больше, чем «Hello World» в Docker Отказ Серия поможет вам готовить ваше приложение: от настройки его локально, чтобы развернуть его как рабочая нагрузка на производственную класс в AWS.
- Создание рельсов + веб-приложения Sidekiq в Docker
- Развертывание рельсов в Amazon ECS
- Концепции
- Нажмите изображение в ECR — мы здесь
- Создайте базу данных RDS, определение задачи и балансировку нагрузки
- Создайте кластер ECS и подключите его все вместе
- Настроить Sidekiq.
- Автоматизация развертываний с AWS CodeDey
- Глубокое погружение на AWS CodeBuild
- Расширенные концепции ECS:
- Обзорное открытие и автоматическое масштабирование — скоро
- Фаргут — скоро
Первый шаг в развертывании вашего приложения в области приложения в облаке может загрузить изображения, которые вы создали в репозиторий изображения. Для этого учебника мы будем использовать реестр контейнеров AWS AWS (ECR).
Вам понадобится учетная запись AWS. Вы можете настроить один здесь Отказ В этом разделе мы создадим политику IAM со всеми разрешениями, которые нам нужно получить доступ к ECR. Затем мы приложим эту политику новому пользователю, которую мы будем использовать позже.
(2.1) Когда вы закончите с настройкой учетной записи AWS, давайте создадим политику IAM. На вкладке «Услуги» ищите IAM и нажмите на нее. Затем щелкните вкладку «Политики» в меню левого бока. После этого нажмите «Создать политику».
(2.2) На следующей странице выберите Эластичный реестр контейнера Как сервис, все Эластичные акции реестра контейнера как действия, и Все ресурсы как ресурсы. Это разрешение дает возможность нашей пользовательской способности делать что-либо внутри службы ECR (например, Push Docker Images в ECR и т. Д.)
(2.3) На следующей странице добавьте ECR-Admin-Access Как имя, а Дайте админ-доступ к ECR как описание. Потом, Нажмите Создать политику Отказ
(2.4) Теперь иди к Пользователи Вкладка в левом меню. Потом, Нажмите Создать пользователя Отказ
(2.5) На следующей странице добавьте ECR-Fetch-user Как имя пользователя и включить Программный доступ Отказ Существует два основных способа доступа к AWS: через консоль управления (которые вы сейчас используете) или через CLI. Включение Программный доступ позволит нам получить доступ только к AWS через CLI. Затем нажмите «Далее: разрешения».
(2.6) На следующей странице ищите политику, которую мы создали в 2.1: ECR-Admin-Access Отказ Затем отметьте флажок слева и нажмите «Далее: теги»
(2.7) Пропустите следующие страницы, нажав Далее. Затем просмотрите свой пользователь IAM. Когда вы рассмотрели его, нажмите «Создать пользователь».
(2.8) Следующая страница покажет идентификатор ключа доступа (AKID) и секрет. Вы будете использовать эти учетные данные, чтобы получить доступ к AWS на более позднем этапе. Обязательно скачайте CSV, так как это будет в последний раз, когда вы сможете увидеть эти учетные данные.
(2.9) Настройте свой AWS CLI, используя Официальное руководство по установке Отказ Нажмите на ОС, которую вы используете на левой стороне.
На шаге, где вы введите AWS Configure
, положить в акид и секрет, вы скачали с 2.8. Для региона выберите «AP-юго-восток-1».
С настройкой AWS CLI давайте погрузимся!
(3.0) В настройке производства вы должны выбрать область AWS, ближайший к вам. Для простоты выберите Сингапурскую область («AP-юго-восток-1») на верхней правой стороне.
(3.1) На вкладке «Услуги» ищите ECR и нажмите на нее. На правой части страницы нажмите «Создать репозиторий».
(3.2) На следующей странице используйте образец-докера-рельсы-приложение как имя репозитория. Затем нажмите «Создать репозиторий».
Вы увидите репозиторию URI. Обратите внимание на это, мы будем использовать его на шаге 5.2. Мы создаем репозиторий изображения. С УРИ предоставленного репозитория мы можем подтолкнуть столько версий одного и того же изображения, что и нам нравится.
(4.1) Во-первых, CD
в корневой каталог проекта проекта, который мы сделали на последнем пост Отказ Если вы решили пропустить этот блог, клонировать его от здесь Отказ
Добавьте этот фрагмент в свой файл config/database.yml.
staging: adapter: postgresql encoding: unicode host: <%= ENV['POSTGRESQL_HOST'] %> username: <%= ENV['POSTGRESQL_USER_NAME'] %> password: <%= ENV['POSTGRESQL_PASSWORD'] %> pool: 5 database: <%= ENV['POSTGRESQL_DB'] %>
Это позволяет поставлять наши учетные данные базы данных через переменную среды (вместо того, чтобы жесткодировать их здесь).
(4.2) Затем создайте копию файла вашего конфигурации/среды/development.rb с помощью команды:
cp config/environments/development.rb config/environments/staging.rb
На этапе 4.1 и шаг 4.2 мы создали новую среду Rails под названием Постановка
Отказ Это поэтому мы можем различить среду развития нашей местной и нашей обстановке наших контейнеров.
(4.3) После этого совершите свой прогресс:
git add . git commit -m "Add staging environment" git push origin master
(4.4) Для нас, чтобы запустить наши рельсы сервер на наших контейнерах, создайте новый файл под названием config/docker_puma.rb
и вставьте фрагмент снизу. Мы собираемся использовать сервер приложений по умолчанию для Rails, Puma.
# Change to match your CPU core count workers 1 # Min and Max threads per worker threads 1, 6 app_dir = File.expand_path("../..", __FILE__) shared_dir = "#{app_dir}/shared" # Default to production rails_env = ENV['RAILS_ENV'] || "production" environment rails_env # Set up socket location bind "unix://#{shared_dir}/sockets/puma.sock" # Logging # - Commened out this line so logs would pour into awslogs cloudwatch # stdout_redirect "#{app_dir}/log/puma.stdout.log", "#{app_dir}/log/puma.stderr.log", true # Set master PID and state locations pidfile "#{shared_dir}/pids/puma.pid" state_path "#{shared_dir}/pids/puma.state" activate_control_app on_worker_boot do require "active_record" ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env]) end
(4.5) Затем создайте папки, необходимые PUMA.
mkdir shared mkdir shared/sockets mkdir shared/pids
(4.6) После этого совершите свой прогресс:
git add . git commit -m "Add special docker puma config. Add folders for puma" git push origin master
В этом разделе мы нажимаем изображение в ECR.
(5.1) Давайте построим изображение Docker с этой командой: Docker Build. -t my-rails-приложение
. Это может занять некоторое время.
(5.2) Когда сборка сделана, давайте пометим изображение, которое мы просто построили. Получите URI репозитория, вы приняли к сведению на шаге 3.2 и запустите: Docker Tag My-Rails-App: последние
(5.3) Тогда давайте подтвердимся подлинностью, набрав AWS ECR Get-Login - Inno-Image Email-Southeast-1
Отказ Команда выводится строка, начинающаяся в Docker Login -U AWS -P
Отказ Эта строка будет использоваться для нас, чтобы войти в систему с помощью репозитория частного изображения ECR, который мы создали в разделе 3. Скопируйте вставку всю строку обратно в терминал.
Для тех, кто использует AWS CLI 2.0, вы можете использовать команду: AWS ECR Get-Login-Password | Docker Login --username AWS --Password-stdin
Отказ
(5.4) Давайте теперь подтолкнумся нашему образу в ECR: Docker Push
Отказ Ваша локальная машина теперь нажимает изображение в ECR, слой по слою. Это должно выглядеть что-то вроде этого:
(5.5) Вернитесь к консоли управления AWS. На вкладке «Услуги» ищите ECR и нажмите на нее. Затем щелкните по репозиторию, который вы создали на шаге 3.2
Вы должны быть в состоянии увидеть изображение, которое вы только что загружены, с тегом «V1.0.0»
Вы нажали ваше первое изображение в ECR. В следующем посте вы построите необходимые ресурсы AWS для настройки приложения Rails в ECS.
Особая благодарность, мой редактор, мой редактор, чтобы помочь этому посту стать более последовательным. Еще одно особенное благодаря Ричарду Геслелеру за наконечник на AWS CLI 2.0
Я рад принять ваши комментарии/отзывы на этом посте. Просто комментируйте ниже, или напишите мне!
Оригинал: «https://dev.to/raphael_jambalos/deploy-rails-in-amazon-ecs-part-2-push-an-image-to-ecr-43fl»