ホームページ  >  記事  >  バックエンド開発  >  Azure Web App でのカスタム golang 起動コマンド

Azure Web App でのカスタム golang 起動コマンド

王林
王林転載
2024-02-09 12:03:081004ブラウズ

Azure Web App 上的自定义 golang 启动命令

#php editor Strawberry は今日、Azure Web App 上のカスタム golang 起動コマンドを紹介します。 Azure Web App は、開発者が Web アプリケーションを簡単にデプロイおよび拡張できるようにするマネージド クラウド サービスです。 Golang は、高速で信頼性が高く、簡潔な効率的なプログラミング言語です。 golang 起動コマンドをカスタマイズすることで、開発者は Web アプリケーションの起動プロセスをより適切に制御し、よりパーソナライズされた機能を実現できます。この記事では、開発者がこの機能をより有効に活用できるように、Azure Web App でカスタマイズされた golang 起動コマンドを構成して使用する方法を詳しく紹介します。

質問内容

github アクションを使用した go Web アプリケーションを Azure App Service にデプロイしようとしています。 azure/webapps-deploy@v2 を使用してアプリケーションをデプロイする必要があるまで、デプロイ全体が成功します。

問題がどこにあるのかを確認するために、単純な go 'hello world' テスト アプリケーションを作成しました。この非常に単純なアプリケーションをデプロイするだけで準備完了です。ただし、テスト アプリケーションをデプロイしようとしたときに、次のことに気づきました。

    アプリケーションは、実行可能ファイルを使用して実行するのではなく、Azure 上で完全に再構築されます。以前のデプロイメント ファイルは次のようになっていました:
  • リーリー
この展開には問題はありません。コードベース アプリケーションは Azure Web Apps にフィードされます。最後のステップで実行可能ファイルを使用しようとすると、展開が失敗します。もちろん、Azure Web アプリには起動コマンドを設定するためのカスタム フィールドがあります。起動時に実行可能ファイルを実行するために

./main に設定しようとしましたが、それでも失敗しました。 リーリー

go build main.go を使用してローカル マシン上で go アプリケーションをビルドし、./main を実行すると、アプリケーションは問題なく実行されます。

    前の手順の実行可能ファイルをそのまま実行することはできなかったため、ロールバックして、Azure App Service に go アプリをそのまま実行させることにしました。その場合は、ビルド ステップ全体が必要なくなり、コードを Azure Web サービスにプッシュするだけで済みます。このような:###
  • リーリー
  • コードベース全体をプッシュする必要があるにもかかわらず、それでもうまく機能します。ただし、実稼働アプリケーションでは、構造上の理由により、main.go ファイルはルート ディレクトリにありません。この動作を模倣するために、main.go ファイルを /cmd ディレクトリに配置しました。 Azure Web アプリのデプロイが再び失敗しました。これは、Azure が main.go ファイルを見つけられないことが原因である可能性があると推測できます。もう一度 start コマンドを使用したいのですが、今回は
go を使用して cmd/main.go

を実行します。残念ながら、これも機能しません。 Azure Web アプリには、パイプラインの実行時に構築されたすべてのものが表示されます:

###助言がありますか?ここで何が欠けているのでしょうか?

前の手順で作成した実行可能ファイルを Azure Web アプリにアップロードし、そこで実行可能ファイルを実行する方法に関する解決策はありますか?

回避策

まず、Azure Web アプリの環境変数

website_run_from_package

1 に設定する必要があります。これにより、ビルドが Azure 上で再度実行されなくなります。この時点から、事前にビルドされた実行可能ファイルをアップロードできるようになります。 また、特定の実行可能ファイルを実行するために起動コマンドを設定する必要もありました。

これを実行すると、https://appname-here.scm.azurewebsites.net/api/logstream

のログに次の内容が表示されます。 リーリー バージョン glibc_2.34

が表示されるのは、アプリケーションが ubuntu-latest を使用してパイプラインでビルドされたためです。これは ubuntu-22.04 で、

glibc_2.35 がありますが、これを実行したい Azure マシンにはこのバージョンがありません。 ubuntu-20.04 バージョン glibc_2.31 でのビルドは完全に機能します。

以上がAzure Web App でのカスタム golang 起動コマンドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。