Ошибка миграции базы данных AWS при развертывании приложения ruby ​​on rails в среде Elastic Beanstalk Environment

Когда я пытаюсь развернуть свое приложение RoR через среду AWS Elastic Beanstalk Environment, на консоли появляется следующая ошибка:

ERROR: [Instance: i-0c1d25d2a182d8424] Command failed on instance. Return code: 1 Output: (TRUNCATED)...ly and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
/opt/rubies/ruby-2.5.0/bin/bundle:23:in `load'
/opt/rubies/ruby-2.5.0/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace). 
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/12_db_migration.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
INFO: Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].
ERROR: Unsuccessful command execution on instance id(s) 'i-0c1d25d2a182d8424'. Aborting the operation.
ERROR: Failed to deploy application.  

Ниже представлена ​​моя конфигурация в database.yml.

production:
  <<: *default
  database: <%= ENV['RDS_DB_NAME'] %>
  username: <%= ENV['RDS_USERNAME'] %>
  host: <%= ENV['RDS_HOSTNAME'] %>
  password: <%= ENV['RDS_PASSWORD'] %>
  port: <%= ENV['RDS_PORT'] %>

И следующая ошибка, записанная в журнале:

  ++ export RUBY_ROOT=/opt/rubies/ruby-2.5.0
  ++ RUBY_ROOT=/opt/rubies/ruby-2.5.0
  ++ export RUBYOPT=
  ++ RUBYOPT=
  ++ export PATH=/opt/rubies/ruby-2.5.0/bin:/opt/elasticbeanstalk/lib/ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
  ++ PATH=/opt/rubies/ruby-2.5.0/bin:/opt/elasticbeanstalk/lib/ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
  +++ /opt/rubies/ruby-2.5.0/bin/ruby -
  ++ eval 'export RUBY_ENGINE=ruby;
  export RUBY_VERSION=2.5.0;
  export GEM_ROOT = "/opt/rubies/ruby-2.5.0/lib/ruby/gems/2.5.0";'
  +++ export RUBY_ENGINE=ruby
  +++ RUBY_ENGINE=ruby
  +++ export RUBY_VERSION=2.5.0
  +++ RUBY_VERSION=2.5.0
  +++ export GEM_ROOT=/opt/rubies/ruby-2.5.0/lib/ruby/gems/2.5.0
  +++ GEM_ROOT=/opt/rubies/ruby-2.5.0/lib/ruby/gems/2.5.0
  ++ ((  0 != 0  ))
  + cd /var/app/ondeck
  + su -s /bin/bash -c 'bundle exec /opt/elasticbeanstalk/support/scripts/check-for-rake-task.rb db:migrate' webapp
  `/home/webapp` is not a directory.
  Bundler will use `/tmp/bundler/home/webapp' as your home directory temporarily.
  + '[' false = true ']'
  + su -s /bin/bash -c 'leader_only bundle exec rake db:migrate' webapp
  `/home/webapp` is not a directory.
  Bundler will use `/tmp/bundler/home/webapp' as your home directory temporarily.
  rake aborted!
  PG::ConnectionBad: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
  /opt/rubies/ruby-2.5.0/bin/bundle:23:in `load'
  /opt/rubies/ruby-2.5.0/bin/bundle:23:in `<main>'
  Tasks: TOP => db:migrate
  (See full trace by running task with --trace) (Executor::NonZeroExitStatus) 

Кроме того, rake db: migrate отлично работает локально. Я понятия не имею, что здесь может происходить, для базы данных я пытался импортировать моментальный снимок экземпляра базы данных, которая у меня уже была на AWS RDS, но я также пытался создать новую базу данных.

Если вы думаете, имеете ли вы какое-либо представление о том, что здесь может происходить, я был бы очень признателен, если бы вы могли сообщить мне.

Заранее спасибо.

Возможно, Постгрес умер на инстансе Beanstalk EC2. Например, в ответе это пользователь пытается вручную запустить postgres. Можете ли вы попробовать добавить к нему конфигурацию .ebextension с команда, "postgres -D which postgres", в основном, чтобы убедиться, что postgres работает до запуска вашего приложения?

progfan 17.03.2018 08:35

Вы установили правильные значения для RDS_HOSTNAME, RDS_PORT? Можете ли вы подключить базу данных к своему экземпляру EC2?

Tai 17.03.2018 09:19

@Tai где мне установить такие значения? Я думал, что они были автоматически переданы Elastic Beans.

Giulio Colleluori 17.03.2018 22:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
633
1

Ответы 1

В качестве вашего комментария я считаю, что вы пропустили настройку RDS_ * в Elastic Beanstalk. Чтобы исправить это:

  1. Чтобы настроить все RDS_ *, следуйте этому руководству здесь: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-softwaresettings.html#environments-cfg-softwaresettings-console.
  2. Повторно разверните ваше приложение.

Спасибо. Я попытался добавить параметры, но все равно получаю те же ошибки. Есть ли другие идеи о том, что может быть причиной этого?

Giulio Colleluori 18.03.2018 10:05

Пожалуйста, опубликуйте /var/log/eb-activity.log

Tai 18.03.2018 10:49

Это тот же самый, что я писал в вопросе @tai

Giulio Colleluori 18.03.2018 10:50

Если вы укажете правильные переменные, eb-activity.log будет содержать ваши переменные, например: +++ export RDS_DB_NAME=application +++ RDS_DB_NAME=application

Tai 18.03.2018 10:52

установка ваших переменных в пользовательском интерфейсе не всегда работает, установка их через CLI обычно делает @Tai

user3738936 09.06.2019 21:00

Другие вопросы по теме