3.3 KiB
3.3 KiB
部署
本文档说明如何构建、运行、容器化和发布 DiAL。开发环境运行见 README 快速开始。
生产构建和运行
bun run build
./dist/dial-server ./probes.yaml
构建产物为独立可执行文件,只需要一个 YAML 配置文件即可运行。
启动后:
| 地址 | 行为 |
|---|---|
http://127.0.0.1:3000/ |
返回前端 Dashboard |
http://127.0.0.1:3000/api/* |
返回后端 API |
http://127.0.0.1:3000/health |
返回健康检查 |
Docker 部署
DiAL 提供基于 Alpine 的多阶段镜像。构建阶段使用 Bun 生成 musl 目标单可执行文件,运行阶段只包含 dial-server、基础证书、ping、Bun musl executable 必需运行库、时区数据和容器运行目录。
docker build -t dial:alpine .
docker run --rm -p 3000:3000 -v dial-data:/data/dial dial:alpine
容器默认读取 /etc/dial/probes.yaml,推荐将数据卷挂载到 /data/dial。
使用自定义配置文件:
docker run --rm -p 3000:3000 \
-v "$PWD/docker/probes.yaml:/etc/dial/probes.yaml:ro" \
-v dial-data:/data/dial \
dial:alpine
容器专用示例配置位于 ../../docker/probes.yaml,默认监听 0.0.0.0:3000,并将 SQLite 数据和日志写入 /data/dial。
ICMP 权限
如需在容器中运行 ICMP checker,除镜像内置 iputils-ping 外,还需要授予 NET_RAW capability:
docker run --rm --cap-add=NET_RAW -p 3000:3000 -v dial-data:/data/dial dial:alpine
CMD checker 额外命令
官方镜像不内置 bun、node、curl、dig、psql、mysql、redis-cli 等 CMD checker 可能需要的额外命令。需要这些命令时请使用派生镜像自行安装:
FROM dial:alpine
USER root
RUN apk add --no-cache curl bind-tools postgresql-client
USER dial
多架构镜像
docker buildx build --platform linux/amd64,linux/arm64 -t dial:alpine .
Dockerfile 通过 Docker 提供的 TARGETARCH 选择 Bun compile target。
TARGETARCH |
BUN_TARGET |
|---|---|
amd64 |
bun-linux-x64-musl |
arm64 |
bun-linux-arm64-musl |
跨平台发布包
bun run release
bun run release --target linux-x64
bun run release --target linux-x64,windows-x64,darwin-arm64
支持的目标平台:
| CLI 参数 | Bun CompileTarget |
|---|---|
linux-x64 |
bun-linux-x64 |
linux-arm64 |
bun-linux-arm64 |
linux-x64-musl |
bun-linux-x64-musl |
linux-arm64-musl |
bun-linux-arm64-musl |
windows-x64 |
bun-windows-x64 |
darwin-x64 |
bun-darwin-x64 |
darwin-arm64 |
bun-darwin-arm64 |
产出物结构:
dist/release/
├── binaries/
│ ├── dial-server-0.1.0-linux-x64
│ └── dial-server-0.1.0-windows-x64.exe
└── packages/
├── dial-server_0.1.0_linux_x64.tar.gz
└── dial-server_0.1.0_linux_x64.tar.gz.sha256
压缩包内含可执行文件、probes.example.yaml 和 LICENSE,解压后可直接使用。