Docker 部署

Docker 部署

MLiev IAM 提供多阶段 Docker 构建,生成的镜像包含完整的前端和后端。

构建镜像

docker build -t mliev-iam .

构建过程分三个阶段:

  1. 前端构建(Node.js 22)— 编译管理后台、OIDC 登录页、安装向导
  2. 后端构建(Go 1.25 Alpine)— 编译 Go 二进制文件(静态链接,CGO 禁用)
  3. 运行镜像(Alpine)— 最终镜像,仅包含二进制文件和必要的系统库

运行容器

基本运行

docker run -d \
  --name mliev-iam \
  -p 8080:8080 \
  mliev-iam

挂载配置和数据

docker run -d \
  --name mliev-iam \
  -p 8080:8080 \
  -v $(pwd)/config.yaml:/app/config/config.yaml \
  -v $(pwd)/logs:/app/logs \
  -v $(pwd)/data:/app/data \
  mliev-iam

使用环境变量

docker run -d \
  --name mliev-iam \
  -p 8080:8080 \
  -e JWT_SECRET_KEY=your-secret-key \
  mliev-iam

Docker Compose 示例

version: '3.8'

services:
  mliev-iam:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - ./config.yaml:/app/config/config.yaml
      - ./logs:/app/logs
    depends_on:
      - mysql
      - redis
    restart: unless-stopped

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: mliev_iam
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  mysql_data:

健康检查

Docker 镜像内置了健康检查配置:

  • 端点: GET /health/simple
  • 间隔: 30 秒
  • 超时: 10 秒
  • 启动等待: 5 秒
  • 重试次数: 3 次
# 查看容器健康状态
docker inspect --format='{{.State.Health.Status}}' mliev-iam

时区

镜像默认时区为 Asia/Shanghai。如需修改,设置 TZ 环境变量:

docker run -e TZ=UTC ...