feat: Alpine 多阶段 Docker 镜像,支持 amd64/arm64 musl 构建
This commit is contained in:
42
README.md
42
README.md
@@ -78,6 +78,48 @@ bun run build
|
||||
|
||||
构建产物为独立可执行文件,只需一个 YAML 配置文件即可运行。
|
||||
|
||||
### Docker 部署
|
||||
|
||||
DiAL 提供基于 Alpine 的多阶段镜像。构建阶段使用 Bun 生成 musl 目标单可执行文件,运行阶段只包含 `dial-server`、基础证书、`ping`、musl executable 必需运行库、时区数据和容器运行所需目录。
|
||||
|
||||
```bash
|
||||
# 构建当前架构镜像
|
||||
docker build -t dial:alpine .
|
||||
|
||||
# 运行容器,使用内置容器配置示例
|
||||
docker run --rm -p 3000:3000 -v dial-data:/data/dial dial:alpine
|
||||
|
||||
# 使用自定义配置文件
|
||||
docker run --rm -p 3000:3000 \
|
||||
-v "$PWD/docker/probes.yaml:/etc/dial/probes.yaml:ro" \
|
||||
-v dial-data:/data/dial \
|
||||
dial:alpine
|
||||
```
|
||||
|
||||
容器默认读取 `/etc/dial/probes.yaml`,推荐将数据卷挂载到 `/data/dial`。容器专用示例配置位于 [`docker/probes.yaml`](docker/probes.yaml),默认监听 `0.0.0.0:3000`,并将 SQLite 数据和日志写入 `/data/dial`。
|
||||
|
||||
多架构镜像可通过 Docker Buildx 构建:
|
||||
|
||||
```bash
|
||||
docker buildx build --platform linux/amd64,linux/arm64 -t dial:alpine .
|
||||
```
|
||||
|
||||
如需在容器中运行 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
|
||||
```
|
||||
|
||||
官方镜像不内置 `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
|
||||
|
||||
Reference in New Issue
Block a user