110 lines
3.3 KiB
Markdown
110 lines
3.3 KiB
Markdown
# 部署
|
||
|
||
本文档说明如何构建、运行、容器化和发布 DiAL。开发环境运行见 [README 快速开始](../../README.md#快速开始)。
|
||
|
||
## 生产构建和运行
|
||
|
||
```bash
|
||
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 必需运行库、时区数据和容器运行目录。
|
||
|
||
```bash
|
||
docker build -t dial:alpine .
|
||
docker run --rm -p 3000:3000 -v dial-data:/data/dial dial:alpine
|
||
```
|
||
|
||
容器默认读取 `/etc/dial/probes.yaml`,推荐将数据卷挂载到 `/data/dial`。
|
||
|
||
使用自定义配置文件:
|
||
|
||
```bash
|
||
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`](../../docker/probes.yaml),默认监听 `0.0.0.0:3000`,并将 SQLite 数据和日志写入 `/data/dial`。
|
||
|
||
## ICMP 权限
|
||
|
||
如需在容器中运行 ICMP checker,除镜像内置 `iputils-ping` 外,还需要授予 `NET_RAW` capability:
|
||
|
||
```bash
|
||
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 可能需要的额外命令。需要这些命令时请使用派生镜像自行安装:
|
||
|
||
```dockerfile
|
||
FROM dial:alpine
|
||
|
||
USER root
|
||
RUN apk add --no-cache curl bind-tools postgresql-client
|
||
USER dial
|
||
```
|
||
|
||
## 多架构镜像
|
||
|
||
```bash
|
||
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` |
|
||
|
||
## 跨平台发布包
|
||
|
||
```bash
|
||
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` |
|
||
|
||
产出物结构:
|
||
|
||
```text
|
||
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`,解压后可直接使用。
|