目录
- 前言
- 这套环境的启动模型
- 将安装目录放到外置磁盘
- 使用 Docker 安装并提取 Polarion 2506
- 配置 30 天试用
- 2506 与 22R1 并行运行
- Eclipse/PDE 启动注意事项
- 启动后的最小验证
- 总结
前言
在《Polarion-Docker-开发环境搭建》中,我记录了使用 Docker 管理多个 Polarion 版本的基本思路;《Polarion-Arm-环境修复》则记录了 ARM 环境下的兼容性问题。
这次客户使用的是 Polarion 2506。实际开发时,我并不希望让容器直接启动 Polarion Java 应用,而是继续使用 Eclipse/PDE 启动。Docker 的职责是完成 Linux 环境下的安装、初始化 PostgreSQL 和 Apache,并把完整安装树提取到宿主机;Eclipse 负责加载对应版本的插件和启动 Java 应用。
这套环境的启动模型
可以把环境拆成两部分:
| 部分 | 负责内容 | 运行位置 |
|---|---|---|
| Docker 容器 | 安装 Polarion、保存安装结果、启动 PostgreSQL 和 Apache | Docker |
| Polarion Java 应用 | 加载插件、连接数据库和 SVN、提供应用逻辑 | 宿主机上的 Eclipse/PDE |
因此,容器启动成功并不代表 Polarion Java 已经启动。容器只提供依赖服务和安装目录,最后还需要在 Eclipse 中启动 Polarion2506.launch。
将安装目录放到外置磁盘
本机将 2506 的运行时目录放在外置磁盘:
1 | |
这样做的好处是安装包、插件、SVN 数据和 PostgreSQL 数据不会持续占用内部磁盘。Docker 运行时把这个目录挂载到容器内的 /opt/polarion;宿主机上的 Eclipse 则直接使用外置磁盘的真实路径。
Eclipse 启动参数中的路径必须保持一致:
1 | |
如果通过脚本在多个版本之间切换,脚本只需要切换这两个路径以及对应的启动参数,不需要复制或覆盖 22R1 的安装目录。
使用 Docker 安装并提取 Polarion 2506
最小镜像只负责安装和提取,不在容器中启动 Polarion Java。构建时可以使用 Docker BuildKit 的 named context 读取安装包,避免把较大的 ZIP 文件复制到 Dockerfile 所在目录:
1 | |
这里的 linux/amd64 只表示安装容器使用的架构。如果是在 Apple Silicon 上运行,Docker Desktop 会使用转译来执行安装步骤;这和宿主机 Eclipse 运行 Java 时遇到的 ARM 原生 Node.js 问题是两件事,详见 ARM 修复文章。
安装目录可以直接绑定到外置磁盘:
1 | |
安装完成后,宿主机至少应该能看到以下内容:
1 | |
如果还需要让 PostgreSQL 和 Apache 常驻在容器中,可以启动依赖服务容器。下面的端口是给 2506 并行开发预留的端口:
1 | |
容器内的 PostgreSQL 默认只监听回环地址,而 Java 在宿主机上运行时需要通过宿主机端口访问它。因此,依赖服务启动脚本需要把 PostgreSQL 调整为监听 Docker 私有网络,并只通过 127.0.0.1:25433 暴露给本机开发环境。
配置 30 天试用
在 2506 的运行时配置文件中加入下面这一行:
1 | |
完整文件路径是:
1 | |
修改后需要重新启动 Eclipse 中的 Polarion2506.launch,因为 Java 应用会在启动时读取 polarion.properties。这个配置只应写入 2506 对应的运行时目录,不要误改 22R1 的配置文件。
可以先在宿主机确认配置:
1 | |
预期结果为:
1 | |
该设置用于启动本地 30 天试用环境。试用期和授权使用仍应遵守 Siemens Polarion 的许可条款,不要把这个开发配置用于生产部署。
2506 与 22R1 并行运行
两个版本可以同时运行,但必须隔离端口、运行时目录和 Eclipse/PDE 工作区。当前 2506 使用以下端口:
| 资源 | 2506 |
|---|---|
| HTTP/Apache | 25080 |
| PostgreSQL | 25433 |
| AJP | 25089 |
| control | 25087 |
2506 的 polarion.properties 中相应配置应指向这些端口:
1 | |
Apache 在容器内还需要把 AJP 请求转发到宿主机的 25089,而不能继续指向容器自己的 127.0.0.1:8889。现有的 polarion2506-parallel.sh 会完成端口配置、保存 .parallel-original 备份并启动 polarion2506-services。
并行运行时,22R1 和 2506 还必须使用独立的 Eclipse/PDE 工作区,并分别激活对应版本的 target platform:
- 22R1:
3.22.1 - 2506:
3.25.6
如果同一个 PDE 工作区先加载 2506 的 target platform,再启动 22R1,OSGi 可能会把两套版本的 bundle 混在一起,出现解析失败。这类问题与端口冲突无关,分开工作区才能真正隔离。
Eclipse/PDE 启动注意事项
启动 2506 时,重点检查以下三项:
-Dcom.polarion.home指向/Volumes/Data/Polarion/Polarion2506-runtime/polarion。-Dcom.polarion.propertyFile指向 2506 的etc/polarion.properties。location、configuration和 workspace 不要复用 22R1 的目录。
容器中的 polarion.init 不作为本次开发环境的 Java 启动入口。它可以用于确认安装树是否完整,但应用本身仍通过 Eclipse/PDE 启动,这样才能继续使用插件开发、断点调试和当前的 launch 配置。
启动后的最小验证
先确认依赖容器在运行:
1 | |
再确认 2506 Java 进程使用了正确的运行时目录:
1 | |
最后通过 2506 的 Apache 入口验证 HTTP:
1 | |
HTTP 返回成功只能证明 Apache、AJP 和 Java 的链路已经连通;是否进入试用状态,还需要在 Polarion 的许可/管理界面中确认。
总结
这套方案的关键不是让 Docker 同时运行两套 Polarion,而是把安装、依赖服务和 Java 开发启动拆开:
- Docker 负责安装 2506,并把运行时写入外置磁盘。
- PostgreSQL 和 Apache 可以留在
polarion2506-services容器中。 - Polarion Java 由 Eclipse/PDE 启动,方便调试和插件开发。
- 通过独立端口、运行时目录和 PDE 工作区,可以与 22R1 并行运行。
- 在 2506 的
polarion.properties中设置com.siemens.polarion.license.salt.enabled=false,重启对应 launch 后即可开始本地 30 天试用。