Docker 撰写到 Aspire AppHost API 参考

此参考提供从 Docker Compose YAML 语法到等效 Aspire C# API 调用的系统映射。 将这些表用作将现有 Docker Compose 文件转换为 Aspire 应用程序主机配置时的快速参考。 每个部分介绍容器业务流程的特定方面,从基本服务定义到高级网络和资源管理。

服务定义

Docker 组成 Aspire 注释
services: var builder = DistributedApplication.CreateBuilder(args) 用于添加和表示资源的根应用程序生成器。
service_name: builder.Add*("service_name") 服务名称将成为资源名称。

相关链接:

映像和生成

Docker 组成 Aspire 注释
image: nginx:latest builder.AddContainer("name", "nginx:latest") 直接图像引用。
build: . builder.AddDockerfile("name", ".") 从 . 生成 。Dockerfile
build: ./path builder.AddDockerfile("name", "./path") 从特定路径生成。
build.context: ./app builder.AddDockerfile("name", "./app") 生成上下文。
build.dockerfile: Custom.dockerfile builder.Add*("name").WithDockerfile("Custom.dockerfile") 自定义 Dockerfile 名称。

相关链接:

.NET 项目

Docker 组成 Aspire 注释
build: ./MyApi (for .NET) builder.AddProject<Projects.MyApi>("myapi") 直接 .NET 项目引用。

相关链接:

端口映射

Docker 组成 Aspire 注释
ports: ["8080:80"] .WithHttpEndpoint(port: 8080, targetPort: 80) HTTP 终结点映射。 端口是可选的;如果省略动态端口,则使用动态端口。
ports: ["443:443"] .WithHttpsEndpoint(port: 443, targetPort: 443) HTTPS 终结点映射。 端口是可选的;如果省略动态端口,则使用动态端口。
expose: ["8080"] .WithEndpoint(port: 8080) 内部端口公开。 端口是可选的;如果省略动态端口,则使用动态端口。

相关链接:

环境变量

Docker 组成 Aspire 注释
environment: KEY=value .WithEnvironment("KEY", "value") 静态环境变量。
environment: KEY=${HOST_VAR} .WithEnvironment(context => context.EnvironmentVariables["KEY"] = hostVar) 具有回调上下文的环境变量。
env_file: .env 不支持 环境文件(自定义实现)。

相关链接:

卷和存储

Docker 组成 Aspire 注释
volumes: ["data:/app/data"] .WithVolume("data", "/app/data") 命名卷。
volumes: ["./host:/container"] .WithBindMount("./host", "/container") 绑定装载。
volumes: ["./config:/app:ro"] .WithBindMount("./config", "/app", isReadOnly: true) 只读绑定装载。

相关链接:

依赖项和排序

Docker 组成 Aspire 注释
depends_on: [db] .WithReference(db) 服务依赖项与连接。
depends_on: db: condition: service_started .WaitFor(db) 等待服务启动。
depends_on: db: condition: service_healthy .WaitForCompletion(db) 等待运行状况检查。

相关链接:

网络

Docker 组成 Aspire 注释
networks: [backend] 自动 Aspire 自动处理网络。
自定义网络 不需要 服务发现处理服务间通信。

相关链接:

资源限制

Docker 组成 Aspire 注释
deploy.resources.limits.memory: 512m 不支持 不支持资源限制 Aspire。
deploy.resources.limits.cpus: 0.5 不支持 不支持资源限制 Aspire。

相关链接:

健康检查

Docker 组成 Aspire 注释
healthcheck.test: ["CMD", "curl", "http://localhost/health"] 内置集成。 Aspire 集成包括运行状况检查。
healthcheck.interval: 30s 可在集成中配置。 运行状况检查配置因资源类型而异。

相关链接:

重启策略

Docker 组成 Aspire 注释
restart: unless-stopped 不支持 不支持重启策略 Aspire。
restart: always 不支持 不支持重启策略 Aspire。
restart: no 违约 无重启策略。

相关链接:

伐木业

Docker 组成 Aspire 注释
logging.driver: json-file 内置 Aspire 提供集成日志记录。
logging.options.max-size: 10m 仪表板配置 通过 Aspire 仪表板进行管理。

相关链接:

数据库服务

Docker 组成 Aspire 注释
image: postgres:15 builder.AddPostgres("name") PostgreSQL 具有自动配置。
image: mysql:8 builder.AddMySql("name") MySQL 具有自动配置。
image: redis:7 builder.AddRedis("name") Redis 具有自动配置。
image: mongo:latest builder.AddMongoDB("name") MongoDB 具有自动配置。

相关链接:

另请参阅