包括: 僅限託管整合 —
Client不包含整合
託管整合AspireDocker使您能使用Docker Compose 部署您的Aspire應用程式。 此整合將 Compose 環境建模為可用來代管應用程式服務的運算資源。 當您使用此整合時,會產生 AspireDocker Compose 檔案,以定義在容器化環境中執行應用程式所需的所有服務、網路和磁碟區。 它支援從應用程式模型產生 Docker Compose 檔案以進行部署、協調多個服務,包括 Aspire 遙測視覺化的儀表板、設定環境變數和服務相依性,以及管理容器網路和服務探索。
主機托管整合
託管整合功能可以在 Docker.📦Aspire.Hosting.Docker 的 NuGet 套件中使用。
dotnet add package Aspire.Hosting.Docker
如需詳細資訊,請參閱 dotnet add package 或 管理 .NET 應用程式中的套件相依性。
新增 Docker Compose 環境資源
下列範例示範如何使用以下Docker方法將 Compose 環境新增至AddDockerComposeEnvironment應用程式模型:
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
compose的 Compose 環境。 - 新增 Redis 將包含在 Compose 部署中的 Docker 快取服務。
- 新增將容器化並包含在部署中的 API 服務專案。
- 新增同時參照快取和 API 服務的 Web 應用程式。
- 將所有服務設定為使用 PublishAsDockerComposeService 發佈的 Docker Compose 服務。
小提示
compose 變數指派後,您可以將該變數傳遞至 WithComputeEnvironment API,以消除包含多個運算資源的解決方案的歧義。 否則,不需要變數 compose 。
新增 Docker 具有屬性的 Compose 環境資源
您可以使用以下Docker方法設定Compose環境的WithProperties各種屬性:
builder.AddDockerComposeEnvironment("compose")
.WithProperties(env =>
{
env.DefaultContainerRegistry = "myregistry.azurecr.io";
env.DefaultNetworkName = "my-network";
env.BuildContainerImages = true;
});
新增 Docker Compose 環境資源並使用 Compose 檔案
您可以透過ConfigureComposeFile方法自訂產生的Docker Compose 檔案。
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) 方法會在透過反向 Proxy 或負載平衡器存取儀表板時啟用轉送標頭處理。
發佈和部署
如要使用 Compose 部署Docker應用程式,請使用 :aspire publish
aspire publish -o docker-compose-artifacts
如需相關資訊,請參閱 aspire publish 指令參考。
此指令會在 Docker 指定的輸出目錄中產生 Compose 檔案及所有必要的構件。 產生的檔案包括:
-
docker-compose.yml: 定義所有服務的主要 Compose 檔案 Docker。 -
docker-compose.override.yml:覆寫開發特定設定的檔案。 -
.env:環境變數檔案。 - 服務特定的組態檔和指令碼。
發布後,您可以使用 Compose 部署 Docker 應用程式:
cd docker-compose-artifacts
docker compose up -d
環境變數
託管整合會將 Docker 從應用程式模型擷取環境變數,並將其包含在 .env 檔案中。 這可確保所有組態都正確傳遞至容器化服務。