含まれるもの: ホスティング統合のみ —
Client 統合は含まれません
Aspire Docker ホスティング統合を使用すると、Aspire Compose を使用してDocker アプリケーションをデプロイできます。 この統合は、アプリケーション サービス Docker ホストできるコンピューティング リソースとして Compose 環境をモデル化します。 この統合を使用すると、 Aspire は、コンテナー化された環境でアプリケーションを実行するために必要なすべてのサービス、ネットワーク、ボリュームを定義する Docker Compose ファイルを生成します。 デプロイ用にアプリ モデルから Docker Compose ファイルを生成し、テレメトリの視覚化用の Aspire ダッシュボード、環境変数とサービスの依存関係の構成、コンテナー のネットワークとサービスの検出の管理など、複数のサービスを調整できます。
ホスティング統合
Docker ホスティング統合は、📦Aspire.Hosting.Docker NuGet パッケージで利用できます。
dotnet add package Aspire.Hosting.Docker
詳細については、「dotnet でのパッケージの追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
Docker を追加して Compose 環境リソースを使用する
次の例では、Docker メソッドを使用して AddDockerComposeEnvironment Compose 環境をアプリ モデルに追加する方法を示します。
var builder = DistributedApplication.CreateBuilder(args);
// Add a Docker Compose environment
var compose = builder.AddDockerComposeEnvironment("compose");
// Add your services to the Docker Compose environment
var cache = builder.AddRedis("cache")
.PublishAsDockerComposeService((resource, service) =>
{
service.Name = "cache";
});
var apiService = builder.AddProject<Projects.ApiService>("apiservice")
.PublishAsDockerComposeService((resource, service) =>
{
service.Name = "api";
});
var webApp = builder.AddProject<Projects.WebApp>("webapp")
.WithReference(cache)
.WithReference(apiService)
.PublishAsDockerComposeService((resource, service) =>
{
service.Name = "web";
});
builder.Build().Run();
前述のコード:
-
Dockerという名前の
composeCompose 環境を作成します。 - Redis Compose デプロイに含まれるDocker キャッシュ サービスを追加します。
- コンテナー化され、デプロイに含まれる API サービス プロジェクトを追加します。
- キャッシュと API サービスの両方を参照する Web アプリケーションを追加します。
- Dockerを使用して、すべてのサービスを PublishAsDockerComposeService Compose サービスとして発行するように構成します。
ヒント
compose変数を割り当てたら、それをWithComputeEnvironment API に渡し、複数のコンピューティング リソースを定義するソリューションのために曖昧性を排除します。 それ以外の場合は、 compose 変数は必要ありません。
Docker Compose 環境リソースをプロパティ付きで追加する
Docker メソッドを使用して、WithProperties Compose 環境のさまざまなプロパティを構成できます。
builder.AddDockerComposeEnvironment("compose")
.WithProperties(env =>
{
env.DefaultContainerRegistry = "myregistry.azurecr.io";
env.DefaultNetworkName = "my-network";
env.BuildContainerImages = true;
});
compose ファイル Docker 使用して Compose 環境リソースを追加する
生成された Docker Compose ファイルは、 ConfigureComposeFile メソッドを使用してカスタマイズできます。
builder.AddDockerComposeEnvironment("compose")
.ConfigureComposeFile(composeFile =>
{
composeFile.Networks.Add("custom-network", new()
{
Driver = "bridge"
});
});
ダッシュボード リソース Aspire 環境に追加する
Docker ホスティング統合には、テレメトリを視覚化するためのAspire ダッシュボードが含まれています。 WithDashboardメソッドを使用して構成または無効化できます。
// Enable dashboard with custom configuration
builder.AddDockerComposeEnvironment("compose")
.WithDashboard(dashboard =>
{
dashboard.WithHostPort(8080)
.WithForwardedHeaders(enabled: true);
});
// Disable dashboard
builder.AddDockerComposeEnvironment("compose")
.WithDashboard(enabled: false);
WithHostPortメソッドは、ブラウザーからAspire ダッシュボードにアクセスするために使用するポートを構成します。 WithForwardedHeaders(IResourceBuilder<DockerComposeAspireDashboardResource>, Boolean) メソッドを使用すると、リバース プロキシまたはロード バランサーを介してダッシュボードにアクセスするときに、転送されたヘッダーの処理が可能になります。
公開とデプロイ
Docker Compose を使用してアプリケーションをデプロイするには、aspire publishを使用します。
aspire publish -o docker-compose-artifacts
詳細については、「 Aspire Publish コマンド リファレンス」を参照してください。
このコマンドは、 Docker Compose ファイルと、指定した出力ディレクトリ内のすべての必要な成果物を生成します。 生成されるファイルは次のとおりです。
-
docker-compose.yml: すべてのサービスを定義するメイン Docker Compose ファイル。 -
docker-compose.override.yml: 開発固有の設定のファイルをオーバーライドします。 -
.env: 環境変数ファイル。 - サービス固有の構成ファイルとスクリプト。
発行後、 Docker Compose を使用してアプリケーションをデプロイできます。
cd docker-compose-artifacts
docker compose up -d
環境変数
Docker ホスティング統合は、アプリ モデルから環境変数をキャプチャし、.env ファイルに含めます。 これにより、すべての構成がコンテナー化されたサービスに適切に渡されます。
次のステップ
Aspire