問題タブ [google-managed-vm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Google App Engine カスタム マネージド VM を実行できません: --custom-entrypoint must be set エラー
問題の説明
Google が提供する標準の python27 マネージド VM と同じように動作する、Google App Engine 用のカスタム マネージド VM を作成しようとしています。(これは、C++ ライブラリをランタイムに追加するための最初のステップとして行っています)。
Googleドキュメントから、次の Dockerfile は標準の python27 ランタイムを指定します。
gcloud preview app run
標準の python27 ランタイムを使用して生成された Dockerfile を調べて、これが正しい Dockerfile であることを確認しました。これと同じです。
しかし、この Dockerfile を使用してdev_appserver.py
、または使用してアプリケーションを実行するgcloud preview app run
と、次のエラーが表示されます。
最新バージョンの gcloud (1.9.86、app-engine-python コンポーネント バージョン 1.9.28) とスタンドアロン python アプリ エンジン SDK (1.9.28) を使用しています。以前のバージョンでも同じ問題が発生したため、最新のバージョンに更新しました。
私が試したこと:
gcloud preview app run --help
について次のように述べています--custom-entrypoint
。
これについてどうすればよいかわかりません。docker イメージに ENTRYPOINT が含まれていてはいけませんか? 追加で提供する必要があるのはなぜですか? また、画像のエントリポイントは何にする必要がありgcr.io/google_appengine/python-compat
ますか? Google はこれに関するドキュメントを提供していません。
エラーを無音にする意味のない を試しました--custom-entrypoint="echo"
が、アプリケーションは HTTP 要求に応答しません。
私が見つけた他の2つの関連するstackoverflowの質問は役に立ちませんでした。受け入れられた回答は、これが解決された SDK のバグであることを示唆しているようです。しかし、最新のものを含む 2 つのバージョンの SDK で試しましたが、まだ問題があります。
- 「<code>The --custom_entrypoint flag must be set for custom runtimes」を修正する方法は?
- Google マネージド VM エラー - カスタム エントリ ポイント
再現手順:
私の問題を強調するために、エラーを生成する簡単なアプリケーションを作成しました。次の 3 つのファイルだけで構成されます。
app.yaml
:
Dockerfile
:
これDockerfile
は、python27 ランタイムに使用されるものと同じです (実際には、python27 ランタイムを使用するときに生成された Dockerfile から文字通りコピーアンドペーストされgcloud preview app run
ます) runtime: python27
。
wsgi.py
:
ただし、これら 3 つのファイルを含むディレクトリで実行するdev_appserver.py app.yaml
と、次のエラーが発生します。
java - Google マネージド VM (カスタム/Java) から Google Cloud Datastore に接続しますか?
Google App Engine カスタム マネージド VM for Java から Google Cloud Datastore に接続できますか? 標準のマネージド VM からは可能だと思いますが、カスタムのマネージド VM からは可能ですか?
java - 開発用の Docker を使用して Google 標準マネージド VM をローカルで実行することは可能ですか?
開発目的で Google Standard Managed VM for Java をローカルで実行することはできますか? dev_appserver.py、mvn gcloud:run、または gcloud preview app run は、単純な Hello World アプリケーションには適していますが、それよりも大きなものは機能しません... (シングル スレッド、タイムアウトなど)。
google-app-engine - Google マネージド VM をビルドする Docker ARG コマンド
「ARG」Docker コマンドを使用するためにマネージド VM を構築する引数を渡すことは可能ですか?
Dockerfile でデフォルト値を設定します... ARG env="dev"
Docker コンテナーのビルド この値を変更できます... docker build -t test/app --build-arg env=pr 。
2 つの環境があり、Dockerfile ビルド プロセスで異なる構成ファイルを使用してマネージド VM をデプロイしたいと考えています。
ありがとう。
google-app-engine - Google App Engine マネージド VM のロールバック
マネージド VM コードを更新し、現在のデプロイにデプロイしました。次に、古い展開を削除しました。
新しい展開にバグがありますが、古い展開を削除したため、古いバージョンに戻ることができません!
すべてをやり直さずに、古い展開を元に戻すにはどうすればよいですか? ダウンタイムを最小限に抑えたい。
python - Google マネージド VM モジュールが再起動ループでスタックする
デフォルトの GAE サンドボックスの代わりにマネージド VM を使用する新しいApp Engine モジュールを追加しようとしています。その目的は、ユーザー向けのモジュールから呼び出すことができる新しいバージョンの SciPy と NumPy を実行できるモジュールを提供することです。Docker イメージ/コンテナーをローカルで正常にビルドして実行しましたが、Google サーバー上のカスタム バージョンにデプロイしようとすると、多くの問題が発生しました。
以下は、マネージド VM モジュール インスタンスのシリアル コンソール出力からのものです。このインスタンスは、制御できないと思われる問題が原因で再起動を続けています。
他の誰かがこれらに遭遇しましたか? 構成/展開プロセス中に何かを見逃しましたか?
FWIW: 私は数年間 GAE を使用しており、Google での勤務中にも GAE に貢献しました。モジュールや Docker の使用経験もあります。マネージド VM に関するドキュメントとツールは、現時点では非常に未熟であるように思われます。私は助けが必要です。
編集: shutdown.log からの追加情報は以下のとおりです。このdocker logs
コマンドは、私のコードまたは Dockerfile のいずれでも実行されていません。Google が最後にコマンドを使用する方法にバグがあると思います。
google-app-engine - 標準ランタイムで Google App Engine マネージド VM をカスタマイズするにはどうすればよいですか?
(Python) Standard Runtime Managed VM をカスタマイズしたいと考えています。理論的には、これは VM の Dockerfile にいくつかのコマンドを追加することで可能になるはずです。
Google のドキュメントには、アプリケーションが最初にデプロイされたときに VM Dockerfile が自動的に生成されると記載されています。
標準ランタイムを使用している場合、gcloud preview app deploy コマンドを初めて実行するときに、SDK によって Dockerfile が作成されます。ファイルは所定の場所に存在します。
- Java で開発している場合、Dockerfile はコンパイルされた Web アプリケーション アーカイブ ディレクトリ (WAR) のルートに表示されます。
- Python または Go で開発している場合、Dockerfile はアプリケーション ディレクトリのルートに表示されます。
そして、その余分なコマンドは実際に追加できます。
このファイルにさらに docker コマンドを追加しながら、標準のランタイム宣言を使用してアプリの実行とデプロイを続行できます。
ただし、実際には、デプロイが完了した直後に Dockerfile が自動的に削除されるため、カスタマイズが妨げられます。
標準ランタイムを使用してマネージド VM に Dockerfile コマンドを追加できた人はいますか? どんな助けでも感謝します。