gcloud app deploy
の実行後に実行されていないことは間違いありません。それらのいくつかが存在するため、コンテナから実行したくない場合もあります。すべてを実行した場合、移行の一部が時々2回実行される競合状態が発生する可能性があります。もう1つは終了する前に実行されます。したがって、展開先のマシン上で実行することは理にかなっています。幸いにも、それはGoogle Cloud SQL Proxyを使用することは簡単です(これはもちろんCloud SQLを使用していることを前提としています)。ドキュメントについては、このリンクを参照してください:gcloud
、ログインを使用して次に
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 chmod +x cloud_sql_proxy.linux.amd64 sudo mv cloud_sql_proxy.linux.amd64 /usr/local/bin/cloud-sql-proxy
と一つにデフォルトのプロジェクトを設定します。https://cloud.google.com/sql/docs/mysql/connect-external-app#proxy
まず、我々はクラウドSQLプロキシ自体を(これらは、Linuxのためのものである)に設定しました(クラウドSQLプロキシを接続する方法を把握するのgcloud設定を使用しているため)あなたは現在作業している:
gcloud config set project <your project name> # we don't want to deploy or connect to the wrong project! gcloud auth list # make sure you're dealing with the account you should be gcloud auth application-default login
私はすでに適切な資格情報を持っていないサービスアカウントでログインしていたGoogle Compute Engine VMから導入しているため、最後のステップが必要でした。
次に、クラウドのSQLプロキシソケットディレクトリを設定します。これはPostgresでもうまくいきます。ただ、それは本番の設定が期待する同じディレクトリだことを確認してください:
sudo mkdir /cloudsql sudo chown $USER /cloudsql
を次に、別のウィンドウまたはバックグラウンドでのクラウドSQLプロキシを起動します。
cloud-sql-proxy -dir /cloudsql
その後、あなたのデプロイを実行しますタスクと移行:
gcloud app deploy RAILS_ENV=production rake db:migrate
私はこれを設定したばかりですが、デプロイメントの前に移行を実行すると(長い時間がかかります)、サイトがダウンするという事実に不満を感じました。後で移行を実行すると、ヘルスチェックの設定方法によっては、新しいバージョンが正常でないことが検出されることがあります。 config.active_record.migration_error
がデフォルトでは本番環境に設定されていないため、保留中の移行がある場合にヘルスチェックエンドポイントが例外を発生させるようにヘルスチェックを設定しない限り、展開後に移行を実行することをお勧めします。その後、移行が完了した時点でアプリケーションを新しいバージョンに移行させることができます。しかし、定期的に稼動しているヘルスチェックの性質上、数秒間のダウンタイムがあります。上の2行のスクリプト(デプロイメント後に移行を実行する)は、多大な努力を要することなく、おそらくあなたが得られる最高のものです。
ニース情報私はこの問題にぶち当たっていませんでしたが、私は "ステージング"サービスを設定しなければなりませんでした。そして、私はレールコンソールのステージングを実行しなければなりませんでした。 –