SuperAPI AI 工具集

docker-containers

部署与运维

查看项目

更新于 10-16 04:05

技能介绍

用途

该技能面向 .NET 多容器应用开发,围绕 Docker Compose 容器编排与开发环境搭建,提供可参考的配置与代码示例。适用于需要将 .NET 应用容器化、编排多个服务及其依赖、或搭建本地开发环境的场景。

主要能力

多阶段 Dockerfile(.NET 10)

提供多阶段构建示例:构建阶段使用 mcr.microsoft.com/dotnet/sdk:10.0,先复制解决方案与各项目文件以利用层缓存,再执行 dotnet restore 与 dotnet publish;运行阶段使用 mcr.microsoft.com/dotnet/aspnet:10.0,暴露 8080 端口,设置 ASPNETCORE_URLS 与 DOTNET_RUNNING_IN_CONTAINER 环境变量,并以非 root 用户 $APP_UID 运行,最后通过 ENTRYPOINT 启动应用。

Docker Compose(开发环境)

提供开发用 Compose 配置示例,包含以下服务:

  • webapp:Blazor Web App,映射 5000:8080,配置数据库、Redis、RabbitMQ 连接字符串,依赖 postgres(健康检查通过后启动)与 redis,挂载开发 HTTPS 证书,加入 backend 网络。
  • api:API 服务,映射 5001:8080,依赖 postgres。
  • worker:Worker 服务,依赖 postgres 与 rabbitmq(均需健康检查通过)。
  • postgres:使用 postgres:16-alpine,配置数据库、用户、密码,映射 5432,使用命名卷持久化,配置 pg_isready 健康检查。
  • redis:使用 redis:7-alpine,映射 6379,使用命名卷持久化。
  • rabbitmq:使用 rabbitmq:3-management-alpine,映射 5672(AMQP)与 15672(管理界面),配置默认用户密码,配置 rabbitmq-diagnostics check_port_connectivity 健康检查。
  • 注释中提供 SQL Server 作为 PostgreSQL 的替代方案示例。

同时定义命名卷 postgres_data、redis_data 与桥接网络 backend。

集成事件总线(RabbitMQ)

提供跨服务边界的集成事件示例(OrderPaymentSucceededIntegrationEvent)、事件总线接口 IEventBus(含 PublishAsync 与 Subscribe 方法)以及集成事件处理器示例(OrderPaymentSucceededHandler,通过仓储更新订单支付状态并保存)。

API 网关模式

提供使用 YARP(Yet Another Reverse Proxy)实现网关的示例:通过 AddReverseProxy().LoadFromConfig(...) 加载配置并 MapReverseProxy()。同时给出 appsettings.json 中 ReverseProxy 的路由与集群配置示例,将 /api/catalog/{**catch-all} 与 /api/orders/{**catch-all} 分别转发到对应后端服务地址。

.NET Docker 镜像对照

镜像 用途 大小
mcr.microsoft.com/dotnet/sdk:10.0 仅构建阶段 ~800MB
mcr.microsoft.com/dotnet/aspnet:10.0 Web 应用、API ~220MB
mcr.microsoft.com/dotnet/runtime:10.0 控制台/Worker 应用 ~190MB
mcr.microsoft.com/dotnet/runtime-deps:10.0 自包含 AOT ~110MB

使用方式

资料以配置与代码示例形式呈现,未提供安装命令或具体调用步骤。使用者可参考其中的 Dockerfile、docker-compose 配置、事件总线接口与 YARP 配置,结合自身项目结构调整后使用。

适用场景

  • 将 .NET Web 应用、API、Worker 服务容器化。
  • 使用 Docker Compose 编排应用服务与 PostgreSQL、Redis、RabbitMQ 等依赖。
  • 搭建包含数据库、缓存、消息队列的本地开发环境。
  • 在微服务间通过 RabbitMQ 实现集成事件通信。
  • 使用 YARP 实现 API 网关路由。

限制

资料未提供该技能的安装方式、运行命令、收费信息、平台限制或效果说明,这些内容暂未提供。示例中的镜像版本、端口、密码等均为示例值,实际使用需按项目情况调整。