Skip to content

Docker 部署

这是什么?

Zipoly Server 是一个打包好的程序,通过 Docker(一种虚拟容器技术)运行在你的服务器上。你不需要安装任何编程语言或依赖,只需要:

  1. 下载一个镜像包(.tar,约 50 MB)
  2. 用 Docker 加载并启动
  3. 打开浏览器就能用

没有 Docker?

安装后确认 docker --version 能输出版本号即可。

环境要求

项目最低要求推荐配置
系统Linux / Windows / macOSUbuntu 22.04 LTS
内存2 GB4 GB+
磁盘10 GB 可用空间SSD,预留处理文件的临时空间
Docker20.10+最新稳定版

第一步:获取镜像

从首页「团队版」按钮或 Gitee 发行版 下载 docker-dist.zip(约 50 MB),解压后得到发布目录 docker-dist/,内含 3 个文件:

文件用途
zipoly-server-v2.1.0-image.tarDocker 镜像包,docker load -i 直接加载
docker-compose.yml交付版编排文件(已配置好镜像,无需修改)
DEPLOY.md本部署手册
bash
# 加载镜像到本地 Docker(就像把压缩包解压到 Docker 里)
docker load -i zipoly-server-v2.1.0-image.tar

# 确认加载成功(应该能看到 zipoly-server:2.1.0)
docker images

第二步:启动服务

推荐方式: 交付包已自带交付版 docker-compose.yml(已配置好镜像与数据卷),进入交付目录直接启动:

bash
cd docker-dist
cp docker-compose.yml ..   # 可选:放到你的项目目录
# 编辑 docker-compose.yml 替换 ZIPOLY__SERVER__API_KEY 后:
docker compose up -d

也可以直接用 docker run 启动:

bash
docker run -d \
  --name zipoly-server \
  --restart unless-stopped \
  -p 8080:80 \
  -v zipoly-data:/app/data \
  -e ZIPOLY__SERVER__API_KEY=your-secure-api-key \
  zipoly-server:2.1.0

这些参数是什么意思?

参数一句话解释
-d后台运行,不占用你的终端窗口
--name zipoly-server给容器起个名字,方便后续管理
--restart unless-stopped服务器重启后自动恢复服务
-p 8080:80把容器的 80 端口映射到你电脑的 8080 端口
-v zipoly-data:/app/data创建一个持久化存储卷,数据不会因容器删除而丢失
-e ZIPOLY__SERVER__API_KEY=xxx设置 API 密钥(必填,换成你自己的密码)

API Key 就像是服务的密码。调用接口时必须带上它,防止别人滥用你的服务。请把它换成复杂的随机字符串。

第三步:验证是否成功

bash
# 命令行测试(把 your-secure-api-key 换成你刚才设置的密钥)
curl -H "X-API-Key: your-secure-api-key" http://localhost:8080/api/v1/health

返回 {"status":"ok"} 就说明成功了。

然后打开浏览器访问 http://localhost:8080/,你应该能看到管理后台界面。

用 docker-compose 管理(推荐)

交付包自带的 docker-compose.yml 就是交付版(build: 段已替换为 image: 段,直接拉取本地镜像启动)。如果你要手写一份,参考以下模板:

yaml
services:
  zipoly-server:
    image: zipoly-server:2.1.0
    container_name: zipoly-server
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - zipoly-data:/app/data
    environment:
      - ZIPOLY__SERVER__API_KEY=your-secure-api-key
      - ZIPOLY__LOGGING__LEVEL=info

volumes:
  zipoly-data:
bash
# 启动
docker compose up -d

# 查看日志(排查问题时用)
docker compose logs -f

# 停止
docker compose down

配置域名和 HTTPS(生产环境必做)

如果你的服务器有公网 IP 或域名,建议加一层 nginx 反向代理 + SSL 证书:

nginx
server {
    listen 443 ssl;
    server_name zipoly.example.com;   # 换成你的域名

    ssl_certificate     /etc/nginx/certs/zipoly.pem;
    ssl_certificate_key /etc/nginx/certs/zipoly.key;

    client_max_body_size 512m;        # 允许上传大文件(重要!)

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 300s;       # 大文件处理可能需要较长时间
    }
}

重要:上传大小限制

nginx 默认只允许上传 1MB 的文件,3D 模型通常远超这个大小。必须设置 client_max_body_size,否则上传会直接报 413 错误。

数据备份

所有数据(任务记录、上传文件、处理结果)都存在 /app/data 卷里。备份只需一行命令:

bash
# 备份到当前目录
docker run --rm -v zipoly-data:/data -v $(pwd):/backup \
  alpine tar czf /backup/zipoly-data-backup.tar.gz -C /data .

# 恢复(新环境)
docker run --rm -v zipoly-new-data:/data -v $(pwd):/backup \
  alpine tar xzf /backup/zipoly-data-backup.tar.gz -C /data

升级版本

bash
# 1. 停止并删除旧容器(数据在卷中,不会丢)
docker stop zipoly-server && docker rm zipoly-server

# 2. 加载新版本镜像
docker load -i zipoly-server-v2.1.0-image.tar

# 3. 用交付包自带的编排文件重新启动(数据在卷中,不会丢)
cd docker-dist && docker compose up -d

常见问题

启动后访问报 401?

请求时没有带 API Key,或者 Key 不对。检查 curl 命令里的 -H "X-API-Key: ..." 是否与启动时设置的一致。

大文件上传失败(413)?

前面提到的 nginx client_max_body_size 没设置,或者值太小。改成 512m 或更大。

端口 8080 被占用了?

换一个端口:-p 9090:80,然后访问 http://localhost:9090

任务一直显示排队中?

服务器内存不够或并发数设得太低。见配置参考中的队列调优。

重启后数据没了?

启动时没挂载 -v zipoly-data:/app/data 卷。数据随容器删除而丢失,无法恢复。

更多接口层面的问题见 API 参考

专为 Web3D 开发者设计