Docker サポートを使用して任意の言語でコンテナー化されたアプリをデプロイする

Azure Developer CLI (azd) では、Docker を言語としてサポートしているため、Dockerfile を使用して構築およびデプロイされるサービスを定義できます。 アプリが azd に組み込みのサポートがない言語 (Go、Rust、Ruby、PHP、Kotlin など) で記述されている場合は、Docker を言語として使用して、Azureにビルドしてデプロイできます。 Docker を言語として指定することで、コンテナー化プロセスを完全に制御できるため、次の場合に最適です。

  • Go、Rust、Ruby、PHP、Kotlin、およびその他の言語 (組み込みの azd サポートなし)
  • Polyglot アプリケーション (たとえば、Pythonと Node.jsの両方を使用するサービス)
  • ローカルの依存関係を減らしてテンプレートを実行するシナリオ
  • カスタム OS またはランタイム要件を持つワークロード
  • 既存の Docker ベースのプロジェクトを Azure に移行する

たとえば、Go で記述されたアプリがあり、それを azd を使用してAzure Container Appsにデプロイする場合は、Go サービスの Dockerfile を定義し、それを使用するように azd を構成できます。

Azure.yaml で Docker を言語として構成する

Go アプリ、Rust アプリ、またはその他のサービスに Docker を使用するには、language プロパティを azure.yaml ファイルにdockerに設定し、Dockerfile へのパスを指定します。

services:
  myservice:
    project: ./src/myservice
    language: docker
    docker:
      path: ./Dockerfile

この構成では、 azd は指定された Dockerfile を使用してサービスをビルドしてデプロイします。 この方法は、コンテナー化できる任意の言語またはランタイムに対して機能します。

サンプル シナリオ

hello-azd スターター テンプレートは、Docker をリモート ビルドと組み合わせて言語として使用する方法を示しています。 azure.yaml ファイルでは、テンプレートはlanguage: dockerを設定し、remoteBuild: trueを指定します。

metadata:
  template: hello-azd-dotnet
name: azd-starter
services:
  web:
    project: ./src
    language: docker
    host: containerapp
    docker:
      path: ./Dockerfile
      remoteBuild: true

この構成では、.NET または Docker がローカルにインストールされていない場合でも、ユーザーはテンプレートを実行し、Azure Container Registry でコンテナー イメージをビルドできます。 ビルド プロセスは完全にクラウドで処理されるため、開発者はローカルの依存関係やビルド ツールを設定しなくても簡単に作業を開始できます。

リモート ビルドを利用することで、 hello-azd テンプレートを使用すると、ローカル環境に関係なく、すべてのユーザーに一貫性のある合理化されたエクスペリエンスが保証されます。

次のステップ