4.2 Docker 部署

Docker 部署

推荐使用官方镜像 docker.cnb.cool/mliev/dwz/dwz-server:latest,通过 docker-compose 管理。

1. 准备目录

mkdir mliev-dwz && cd mliev-dwz
mkdir -p config data
chmod 755 ./config ./data

./config 目录用于持久化配置文件、SQLite 数据库与日志,必须挂载进容器。

./data 目录用于持久化运行时数据,当前主要包括品牌 Logo 上传文件。Logo 默认保存到容器内 data/uploads/branding,Docker 部署时需要挂载到 /app/data,避免容器重建后上传文件丢失。

2. 最小 docker-compose.yml(独立模式)

version: '3.8'

services:
  dwz-server:
    container_name: dwz-server
    image: docker.cnb.cool/mliev/dwz/dwz-server:latest
    restart: always
    ports:
      - "8080:8080"
    volumes:
      - "./config/:/app/config/"
      - "./data/:/app/data/"
    environment:
      - TZ=Asia/Shanghai
      - GIN_MODE=release

独立模式默认使用 SQLite 与本地缓存,适合个人或小型部署。首次启动后访问 http://{服务器IP}:8080 按安装向导完成初始化。

3. 生产模式 compose 示例(MySQL + Redis)

version: '3.8'

services:
  dwz-server:
    image: docker.cnb.cool/mliev/dwz/dwz-server:latest
    restart: always
    ports:
      - "8080:8080"
    volumes:
      - "./config/:/app/config/"
      - "./data/:/app/data/"
    environment:
      - TZ=Asia/Shanghai
      - SERVER_MODE=release
      - DATABASE_DRIVER=mysql
      - DATABASE_HOST=mysql
      - DATABASE_PORT=3306
      - DATABASE_NAME=dwz_db
      - DATABASE_USERNAME=dwz
      - DATABASE_PASSWORD=please-change-me
      - CACHE_DRIVER=redis
      - ID_GENERATOR_DRIVER=redis
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - JWT_SECRET=please-change-me
      - SHORTLINK_DOMAIN=https://your.short.domain
    depends_on:
      - mysql
      - redis

  mysql:
    image: mysql:8.0
    restart: always
    environment:
      - MYSQL_DATABASE=dwz_db
      - MYSQL_USER=dwz
      - MYSQL_PASSWORD=please-change-me
      - MYSQL_ROOT_PASSWORD=please-change-me-too
    volumes:
      - "./data/mysql:/var/lib/mysql"

  redis:
    image: redis:7-alpine
    restart: always
    volumes:
      - "./data/redis:/data"

4. 品牌 Logo 上传目录

后台上传的品牌 Logo 默认保存到:

data/uploads/branding

在 Docker 容器内对应路径通常是:

/app/data/uploads/branding

因此 compose 中需要保留:

volumes:
  - "./data/:/app/data/"

上传成功后,系统返回的访问路径格式为:

/uploads/branding/<hash>.<ext>

支持的图片类型为 pngjpegwebpgif,默认最大 2MB。前端上传 Logo 时会先进行裁剪,裁剪后的文件再上传到该目录。

5. 启动与管理

docker-compose up -d        # 后台启动
docker-compose ps           # 查看状态
docker-compose logs -f      # 跟踪日志
docker-compose restart      # 重启
docker-compose down         # 停止并移除容器(数据在挂载卷中保留)

6. 首次访问

浏览器打开 http://{服务器IP}:8080,按安装向导完成初始化。

注意:生产模式下安装向导会检测数据库与 Redis 连通性,请确保相关服务先启动成功。