1
0
Files
DiAL/docs/user/deployment.md

3.3 KiB
Raw Permalink Blame History

部署

本文档说明如何构建、运行、容器化和发布 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 额外命令

官方镜像不内置 bunnodecurldigpsqlmysqlredis-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.yamlLICENSE,解压后可直接使用。