# 构建镜像
docker build -t fishpi-badge-rust:latest .
# 运行容器
docker run -d \
--name fishpi-badge \
-p 3001:3001 \
-e RUST_LOG=info \
fishpi-badge-rust:latest# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down- 3001: 应用服务端口(HTTP)
| 变量名 | 默认值 | 说明 | 可选值 |
|---|---|---|---|
RUST_LOG |
info |
日志级别 | trace, debug, info, warn, error |
static/- 静态资源目录404.html- 404 错误页面index.html- 首页assets/- CSS、JS 等资源daisyui.min.cssfont.jsmain.jsstyle.css
templates/- 模板文件目录badge.svg- SVG 徽章模板
docker run -d \
--name fishpi-badge \
-p 3001:3001 \
-v $(pwd)/static:/app/static:ro \
-v $(pwd)/templates:/app/templates:ro \
fishpi-badge-rust:latest使用 Docker Buildx 构建支持多架构的镜像:
# 创建构建器
docker buildx create --name multiarch --use
# 构建并推送多架构镜像
docker buildx build --platform linux/amd64,linux/arm64 \
-t your-registry/fishpi-badge-rust:latest \
--push .支持的架构:
linux/amd64(x86_64)linux/arm64(ARM64/aarch64)
# 开发环境:详细日志
docker run -d -p 3001:3001 -e RUST_LOG=debug fishpi-badge-rust:latest
# 生产环境:仅警告和错误
docker run -d -p 3001:3001 -e RUST_LOG=warn fishpi-badge-rust:latestdocker run -d \
--name fishpi-badge \
-p 3001:3001 \
--memory="512m" \
--cpus="1.0" \
fishpi-badge-rust:latest容器内置健康检查,每 30 秒检查一次服务状态:
# 查看健康状态
docker inspect --format='{{.State.Health.Status}}' fishpi-badge服务启动后,可通过以下地址访问:
- 徽章生成器:
http://localhost:3001/gen/maker/ - API 端点:
http://localhost:3001/gen?参数
http://localhost:3001/gen?ver=1&url=https://example.com/avatar.jpg&txt=Hello&size=32&border=3
支持的参数:
ver- 版本url- 头像 URLtxt- 文本内容size- 尺寸 (默认: 32)border- 边框宽度 (默认: 3)fontsize- 字体大小 (默认: 15)barradius- 圆角半径scale- 缩放比例 (默认: 1.0)fontcolor- 字体颜色 (支持 auto 或 hex 颜色)backcolor- 背景颜色 (hex 或 HSL)shadow- 阴影强度 (默认: 0.5)anime- 动画速度 (默认: 0.5)barlen- 条形长度font- 字体way- 颜色模式fontway- 字体颜色模式
docker logs fishpi-badgedocker exec -it fishpi-badge /bin/bashdocker restart fishpi-badge- ✅ 容器以非 root 用户(appuser, UID 1000)运行
- ✅ 使用最小化的基础镜像(debian:bookworm-slim)
- ✅ 多阶段构建,减小镜像体积
- ✅ 包含健康检查
⚠️ 建议在生产环境中使用反向代理(如 Nginx)并启用 HTTPS
- 基础镜像:
debian:bookworm-slim - Rust 版本:
1.75 - 最终镜像大小: 约 100-150 MB(取决于架构)