人々がebアプリでdb migrate
のようなコマンドをどのように実行するかについて非常に興味があります。 .ebextensions
として追加した場合、1つのアプリに複数のインスタンスがある場合、複数のサーバーが同じ移行を実行しようとすると競合が発生する可能性があります。
展開プロセスのどの時点でdb migrate
コマンドを実行する必要がありますか?
フラグを試すことができます:leader_only
ebextensions
構成ファイル内。このフラグを使用すると、多くのインスタンスにアプリをデプロイしている場合でも、移行が一度だけ実行されます。たとえば、次のパスでプロジェクトのルートディレクトリにこのファイルを保存します:/.ebextensions/migration.config
option_settings:
container_commands:
database_migration:
leader_only: true
command: "db migrate"
このシーケンスは、PostgreSQLを使用してRails 5.1.4をElasticBeanstalkにデプロイする際に機能します。
ところで、RDSデータベースを調べるために使用していたpgAdminIIIを閉じる必要がありました。私が接続していたので、これはデータベースをロックし、最後のステップを防ぎます。
また、EBコンソール(設定>ソフトウェア)でRails_SKIP_MIGRATIONSをTRUEに設定しました。おそらく、これをデフォルト値のFALSEのままにすると、デプロイメントは必要な移行を実行します。
したがって、元の質問に答えて、アプリサーバーでRails db:reset(またはRails db:migrate)を実行します。 RDSサーバーにSSHで接続することはできません(できません)。