结论先行:智压通 SmartSlim Server 的Docker部署分四步——构建镜像、编写docker-compose.yml、启动服务、验证健康检查。镜像大小约450MB,最低配置2核4GB即可运行,启动后5秒内通过健康检查。生产环境需配置数据卷持久化、Nginx反向代理、日志收集和定时备份。本文给出完整的docker-compose.yml配置、环境变量表和部署步骤详解。下面从部署架构讲起,逐步完成生产级部署。
如果你需要了解Docker部署后如何调用压缩API,建议先阅读压缩API调用实战:RESTful接口文档详解。
一、Docker部署架构
智压通 SmartSlim Server 的Docker部署采用单容器架构,内部运行FastAPI应用,通过数据卷持久化文件和配置,通过端口映射对外提供服务。生产环境增加Nginx反向代理层处理TLS终止和负载均衡。
| 组件 | 技术 | 作用 | 端口 |
|---|---|---|---|
| SmartSlim容器 | Python 3.9 + FastAPI | 压缩服务核心 | 8000(内部) |
| Nginx容器 | Nginx 1.25 | 反向代理/TLS | 80/443(外部) |
| 数据卷-data | Docker Volume | 压缩文件存储 | - |
| 数据卷-logs | Docker Volume | 日志文件 | - |
| 数据卷-config | Docker Volume | 配置和授权 | - |
部署前需确认服务器满足最低配置要求。下表给出不同负载下的配置建议。
| 部署规模 | CPU | 内存 | 磁盘 | 并发数 | 适用场景 |
|---|---|---|---|---|---|
| 最低配置 | 2核 | 4GB | 20GB | 4 | 测试/小团队 |
| 推荐配置 | 4核 | 8GB | 50GB | 8 | 中型企业 |
| 高负载配置 | 8核 | 16GB | 100GB | 16 | 大型企业 |
| 集群配置 | 4核x3节点 | 8GBx3 | 共享存储 | 24+ | 高可用生产 |
二、docker-compose.yml配置详解
以下是生产环境的docker-compose.yml核心配置,包含SmartSlim服务、Nginx反向代理、数据卷和网络配置。
| 配置项 | 说明 | 示例值 |
|---|---|---|
| image | 镜像名称 | uglypear/smartslim-server:latest |
| restart | 重启策略 | always(生产环境) |
| ports | 端口映射 | 8000:8000 |
| volumes | 数据卷挂载 | ./data:/app/data |
| environment | 环境变量 | SMARTSLIM_LICENSE=xxx |
| healthcheck | 健康检查 | curl -f http://localhost:8000/health |
| depends_on | 依赖服务 | nginx |
| deploy.resources | 资源限制 | cpus:4, memory:8G |
三、环境变量配置表
SmartSlim Server通过环境变量配置运行参数,下表列出所有可配置项。
| 环境变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| SMARTSLIM_LICENSE | 是 | - | 授权密钥 |
| SMARTSLIM_HOST | 否 | 0.0.0.0 | 监听地址 |
| SMARTSLIM_PORT | 否 | 8000 | 监听端口 |
| SMARTSLIM_WORKERS | 否 | 4 | 工作进程数 |
| SMARTSLIM_MAX_FILE_SIZE | 否 | 1073741824 | 单文件上限(1GB) |
| SMARTSLIM_SECURITY_LEVEL | 否 | MEDIUM | 安全级别 |
| SMARTSLIM_RATE_LIMIT | 否 | 60 | 每分钟请求限制 |
| SMARTSLIM_LOG_LEVEL | 否 | INFO | 日志级别 |
| SMARTSLIM_TEMP_DIR | 否 | /app/data/tmp | 临时文件目录 |
四、部署步骤详解
Docker部署分构建、启动、验证、监控四步。下表给出每步的操作和验证方法。
| 步骤 | 操作 | 命令 | 验证方法 |
|---|---|---|---|
| 1.构建镜像 | 构建SmartSlim镜像 | docker build -t smartslim-server . | docker images查看镜像 |
| 2.编写配置 | 编写docker-compose.yml | 编辑yml文件 | docker-compose config验证 |
| 3.启动服务 | 启动所有容器 | docker-compose up -d | docker-compose ps查看状态 |
| 4.验证健康 | 检查服务可用性 | curl http://localhost:8000/health | 返回{"status":"ok"} |
| 5.配置Nginx | 配置反向代理 | 编辑nginx.conf | curl https://域名/health |
| 6.部署监控 | 配置日志和监控 | 配置日志收集 | docker logs查看日志 |
五、生产环境最佳实践
生产环境部署需要关注健康检查、日志收集、数据备份和安全加固四个方面。下表给出最佳实践建议。
| 实践项 | 配置建议 | 检查频率 | 工具 |
|---|---|---|---|
| 健康检查 | interval:30s, timeout:10s, retries:3 | 实时 | Docker healthcheck |
| 日志收集 | json-file驱动, max-size:100m, max-file:5 | 实时 | Docker logging |
| 数据备份 | 每日备份data卷到独立存储 | 每日 | cron + docker run |
| 安全加固 | 非root用户运行, 只读文件系统 | 部署时 | Docker security |
| 资源限制 | cpus:4, memory:8G, 告警阈值80% | 实时 | Docker stats |
| 镜像更新 | 定期pull最新镜像滚动更新 | 每月 | docker-compose pull |
一个完整的健康检查配置示例:healthcheck中设置interval为30秒(每30秒检查一次)、timeout为10秒(超时判定失败)、retries为3次(连续3次失败标记unhealthy)、start_period为10秒(启动后10秒开始检查)。这样容器异常会在90秒内被发现并自动重启。
| 监控指标 | 正常范围 | 告警阈值 | 查看命令 |
|---|---|---|---|
| CPU使用率 | 0%–60% | >80% | docker stats |
| 内存使用率 | 0%–70% | >85% | docker stats |
| 磁盘使用率 | 0%–70% | >85% | df -h |
| API响应时间 | 0–2秒 | >5秒 | curl -w参数 |
| 压缩队列长度 | 0–20 | >50 | API status接口 |
| 错误率 | 0%–0.1% | >1% | 日志统计 |
如果你需要了解压缩任务队列的底层设计,可以参考压缩任务队列设计。如果你更倾向通过SDK本地集成而非服务器部署,可以参考压缩SDK集成指南。
六、常见问题FAQ
Q1:Docker部署压缩服务需要什么配置?
智压通 SmartSlim Server 的Docker部署最低配置:2核CPU、4GB内存、20GB磁盘空间,推荐配置4核CPU、8GB内存、50GB磁盘。操作系统需安装Docker 20.10+和Docker Compose 2.0+。支持x86_64和ARM64架构,镜像大小约450MB。生产环境建议预留额外磁盘空间存放临时压缩文件。
Q2:Docker部署的压缩服务怎么更新升级?
更新流程分三步:1.docker-compose pull拉取最新镜像;2.docker-compose up -d重新启动容器(数据卷数据不丢失);3.检查健康检查接口确认服务正常。建议更新前备份数据卷(docker run --volumes-from备份),滚动更新可在Kubernetes环境下实现零停机。版本间兼容性良好,大版本升级前请查阅changelog。
Q3:Docker压缩服务怎么做数据持久化?
通过Docker数据卷实现持久化。需要挂载三个目录:/app/data(压缩文件存储)、/app/logs(日志文件)、/app/config(配置文件和授权密钥)。在docker-compose.yml中用volumes字段声明宿主机到容器的映射。删除容器不会删除数据卷,数据安全。生产环境建议将数据卷挂载到独立磁盘或NAS,方便备份和扩容。
Q4:Docker压缩服务支持高可用部署吗?
智压通服务器版支持单机Docker部署,网络版支持Docker Compose多服务和Kubernetes高可用部署。Kubernetes环境下通过HPA(水平Pod自动伸缩)实现3-10副本弹性扩容,配合共享存储(MinIO)和共享数据库(MySQL)实现无状态化。单机版可通过Nginx负载均衡+多实例实现简单高可用,但建议生产环境用网络版K8s方案。
总结
智压通 SmartSlim Server 的Docker部署四步走:构建镜像、编写docker-compose.yml、启动服务、验证健康检查。镜像450MB,最低2核4GB可运行,启动5秒通过健康检查。环境变量9项配置覆盖授权、并发、安全、限流等核心参数。生产环境六大最佳实践:健康检查30秒间隔、日志100MB轮转、每日数据备份、非root安全加固、资源限制4核8G、镜像月度更新。
记住三点:一是数据卷必挂载三个目录(data/logs/config),删除容器不丢数据;二是健康检查配置interval:30s + retries:3,90秒内发现异常自动重启;三是生产环境加Nginx反代做TLS终止,别直接暴露8000端口。部署完成后,配合压缩API和任务队列即可构建完整的压缩服务。