Dokku 0.31.0 版本迁移指南:关键变更与升级注意事项
2025-07-05 04:42:16作者:翟萌耘Ralph
前言
Dokku 作为轻量级 PaaS 解决方案,其 0.31.0 版本带来了一系列重要的架构改进和功能调整。本文将详细解析这些变更,帮助开发者顺利完成版本迁移。我们将从构建缓存、容器集成、端口映射等多个维度,深入剖析每个变更的技术细节和实际影响。
核心变更解析
1. 构建缓存机制升级
变更内容:Herokuish 构建缓存现在使用 Docker 卷(如 cache-node-js-app
)替代原有的本地文件系统存储。
技术影响:
- 升级到 0.29.0 以上版本时,所有现有应用缓存将被清除
- Docker 卷提供更好的跨主机移植性和管理便利性
- 缓存生命周期与容器生命周期解耦,提高构建稳定性
操作建议:首次升级后需要重新构建应用以建立新的缓存卷。
2. 容器集成优化
Vector 日志收集组件
- 配置挂载路径从
/etc/vector/vector.json
改为/etc/vector
- 现在支持通过额外配置文件扩展 Vector Sinks 功能
操作步骤:
dokku logs:vector-stop
dokku logs:vector-start
Traefik 反向代理
- 配置挂载路径从
/acme.json
改为/data
- 解决了特定架构下的权限问题
操作步骤:
dokku traefik:stop
dokku traefik:start
3. 部署流程改进
镜像部署优化:
- 不再需要手动清除
source-image
git 属性 - 支持从镜像部署(
git:from-image
/git:load-image
)无缝切换到其他部署方式
CHECKS 文件处理:
- 镜像部署:从镜像的
WORKDIR
提取CHECKS
- 其他部署(git push/from-archive/sync):直接从源代码提取
- 文件名固定为
CHECKS
,不可修改
4. 端口映射自动化
重大改进:
- 构建过程中自动检测端口映射
- 默认映射:
http:80:5000
(当未指定时) - 可通过
ports
插件覆盖自动检测结果
技术意义:
- 简化应用部署配置
- 减少因端口配置错误导致的部署失败
- 保持与 Dockerfile
EXPOSE
指令的兼容性
构建器镜像更新
Herokuish Buildpack
- 默认镜像升级为
gliderlabs/herokuish:latest-22
- 基于
heroku-22
栈和 Ubuntu 22.04 - 兼容选项:
gliderlabs/herokuish:latest-20
(基于 heroku-20/Ubuntu 20.04)
Cloud Native Buildpack
- 默认镜像升级为
heroku/builder:22
- 同样基于
heroku-22
栈和 Ubuntu 22.04 - 兼容选项:
heroku/buildpacks:20
升级建议:
- 测试新镜像的兼容性后再全面升级
- 关注应用依赖库与新系统版本的兼容性
- 考虑在过渡期显式指定旧版构建器
废弃功能与替代方案
1. 端口管理重构
proxy:ports*
命令组被新的ports
插件取代- 过渡期保留一个次版本周期的兼容性
2. 函数废弃
common#get_available_port()
→ 使用ports-get-available
插件触发器common#get_dockerfile_exposed_ports()
→ 无替代(仅内部使用)common#get_exposed_ports_from_image()
→ 无替代(仅构建过程使用)
3. 健康检查演进
CHECKS
文件模式废弃,推荐使用app.json
- 迁移工具:
docker-container-healthchecker
- 新格式支持更丰富的健康检查配置
4. 架构支持调整
- ARM 架构进入废弃周期,下个次版本移除
- ARM64 继续支持
- Raspberry PI 用户应规划迁移到 ARM64
配置变量变更
已移除的配置
RAW_TCP_PORTS
(不再用于 nginx 模板)DOKKU_DOCKERFILE_PORTS
→ 使用ports
插件DOKKU_PROXY_PORT_MAP
→ 迁移到属性系统
最佳升级实践
-
预升级检查:
- 备份重要应用和数据
- 检查所有自定义插件与核心功能的兼容性
- 特别关注端口映射和健康检查配置
-
分阶段升级:
# 1. 升级Dokku核心 sudo apt-get update sudo apt-get install dokku # 2. 逐个应用测试 dokku ps:rebuild <app-name> # 3. 处理废弃功能 dokku ports:set <app-name> <port-map>
-
健康检查迁移:
- 使用工具转换现有
CHECKS
文件 - 验证新健康检查配置的有效性
- 逐步过渡到
app.json
格式
- 使用工具转换现有
-
构建器测试:
- 为关键应用显式指定构建器版本
- 监控构建日志中的系统依赖警告
- 准备回滚方案
结语
Dokku 0.31.0 通过标准化端口管理、优化容器集成、升级基础镜像等改进,为应用部署提供了更稳定和现代化的平台。开发者应重点关注端口映射、健康检查和工作负载构建三个方面的变更,按照本文指南制定合理的升级策略,确保平稳过渡到新版本。