2017-11-09 10 views
0

Google App EngineとCloud SQLを使用してアプリケーションを実行しています。クラウドSQLでのKnex移行の実行

ローカル環境とプロダクト環境とそれぞれのDBを正常にセットアップしました。ちょうど、私はKnex migrate CLIを使って自分のローカル環境でいくつかの移行を設定しましたが、すべてがローカルでうまく動作します。

gcloud app deployの後に(または前に)これらの移行(およびシード)を実行するにはどうすればよいですか?私はクラウドシェル内から自分のプロジェクトファイルにアクセスするとは思わない。

私には何が欠けていますか?

+0

私は 'prestart'(' 'prestart": "./node_modules/.bin/knex migrate:latest && ./node_modules/.bin/knex seed:run"、 ')を使って移行を実行しようとしました'googleapi:Error 409:インスタンスまたは操作がリクエストを処理するのに適切な状態ではありません。invalidState' – pmilla1606

答えて

0

npm startでサーバーを起動する前に毎回移行を実行します。 Prestartは、システムが実行しているのと同じ方法で動作するはずです(package.json startから呼び出される別の起動シェルスクリプトがあります)。

Cloud SQL接続を正しくセットアップして、実際にDB接続が動作していることをテストしましたか?アプリエンジンインスタンスで実行されているCloud SQLプロキシコンテナのログを確認します。

あなたは、App Engineのインスタンスにssh接続を開くことによって、それを行うと、プロキシコンテナからのログを確認することができます。

sudo docker ps --no-trunc 
sudo docker logs stoic_heisenberg 

マイSQLプロキシコンテナをstoic_heisenbergと呼ばれていました。また、unixソケットがgaeappコンテナに作成されていることを確認する必要があります。あなたは

container_exec gaeapp /bin/bash 
ls -la /cloudsql 

ファイルがない場合は、クラウドSQLが正しく設定されていない操作を行うことができ、コンテナを入力

+0

ありがとうございますので、' prestart'(またはpackage.jsonのスクリプト)はそのトリックを行うべきです。私はクラウドSQLへの接続を確立しました(そして、フロントエンドからクエリをうまく作成しました)が、これは問題がどこにあるのか想像しました。 GCPとDBの一般的な私の未経験されている途中で取得しています。これを受け入れることで私の質問に答えます。 – pmilla1606

関連する問題