用途
该技能用于为 VanDaemon 配置基于 Docker 与 Docker Compose 的容器化。VanDaemon 采用多容器架构:本地开发时 API 与 Web 分为独立容器,另外提供面向 Fly.io 的合并单容器部署方案。API 运行于 .NET 10,Web 前端使用 nginx 托管 Blazor WASM 静态文件,并代理 API 与 WebSocket 请求。数据通过 Docker 卷持久化,用于 JSON 文件存储。
主要能力
技能涉及的关键概念包括:
- 多阶段构建:用于最小化镜像体积,例如
FROM sdk AS build→FROM aspnet AS final。 - 健康检查:用于容器编排,例如
HEALTHCHECK CMD curl /health。 - 卷挂载:用于持久化 JSON 数据,例如
api-data:/app/data。 - 桥接网络:用于容器间通信,应使用
http://api:80而非localhost:5000。 - Supervisor:用于多进程容器,将 nginx 与 API 合并以适配 Fly.io。
常见模式包括:容器网络配置中使用容器名而非 localhost,并通过 depends_on 与 condition: service_healthy 控制依赖启动顺序;以及通过命名卷持久化数据,如 api-data(JSON 配置文件)和 api-logs(Serilog 输出)。
使用方式
从解决方案根目录启动开发环境:
docker compose up -d
查看日志:
docker compose logs -f
代码变更后重新构建:
docker compose up --build
访问入口如下:
- Web UI:
http://localhost:8080(Blazor WASM 前端) - API:
http://localhost:5000(REST API + Swagger) - Health:
http://localhost:5000/health(容器健康检查) - SignalR:
ws://localhost:5000/hubs/telemetry(实时更新)
适用场景
适用于构建容器、配置 docker-compose、部署到 Docker 等容器化相关任务。相关技能包括:.NET 10 SDK 在 Dockerfile 中的配置可参见 dotnet 技能;API 容器配置可参见 aspnet-core 技能;日志卷配置可参见 serilog 技能。
限制
资料未提供该技能对目标项目版本、运行环境、权限及具体收费模式的要求,这些信息暂未提供。