包括:仅限于—
Client集成不包括
通过 AspireDocker 托管集成,可以使用 Compose 部署 Aspire 应用程序 Docker 。 此集成将 Compose 环境建模 Docker为计算资源,可用于托管应用服务。 使用此集成时,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 Compose 环境,其名称为
compose。 - Redis添加将包含在 Compose 部署中的Docker缓存服务。
- 添加将容器化并包含在部署中的 API 服务项目。
- 添加引用缓存和 API 服务的 Web 应用程序。
- 配置所有服务以发布为 Docker Compose 服务使用 PublishAsDockerComposeService。
小窍门
分配了compose变量后,可以将其传递给WithComputeEnvironment API,以消除定义多个方案时可能产生的计算资源歧义。 否则,不需要变量 compose 。
添加 Docker 包含属性的 Compose 环境资源
您可以使用WithProperties方法配置Docker Compose 环境的各种属性。
builder.AddDockerComposeEnvironment("compose")
.WithProperties(env =>
{
env.DefaultContainerRegistry = "myregistry.azurecr.io";
env.DefaultNetworkName = "my-network";
env.BuildContainerImages = true;
});
使用 Compose 文件添加 Docker 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);
从浏览器访问 Aspire 仪表板时,WithHostPort 方法用于配置端口。 当通过反向代理或负载均衡器访问仪表板时,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:环境变量文件。 - 特定于服务的配置文件和脚本。
发布后,可以使用 Compose 部署应用程序 Docker :
cd docker-compose-artifacts
docker compose up -d
环境变量
Docker 托管集成从应用模型捕获环境变量,并将它们包含在 .env 文件中。 这可确保所有配置都正确传递到容器化服务。