目录
前言
在之前的文章《Polarion-Arm-环境修复》中,我们解决了 Polarion 在 ARM 环境下的兼容性问题。本文将进一步介绍如何使用 Docker 搭建完整的 Polarion 开发环境。
作为 Polarion 开发者,经常需要在不同版本之间切换进行测试和开发。由于 Polarion 不支持多版本共存,传统的安装方式会带来很多不便。本文介绍的 Docker 方案可以:
- ✅ 支持多个 Polarion 版本并存
- ✅ 快速切换开发环境
- ✅ 支持 x86_64 和 ARM64 多架构
- ✅ 隔离环境,避免版本冲突
- ✅ 便于团队协作和环境复制
前置要求
在开始之前,请确保您的系统已安装以下工具:
必需软件
- Docker Desktop 20.10.0+ 或 Docker Engine 20.10.0+
- Git 2.0+
- Bash 4.0+ (macOS/Linux) 或 PowerShell 5.0+ (Windows)
安装验证
1 |
|
权限要求
- Docker 运行权限(Linux 用户需要加入 docker 组)
- 文件系统读写权限
- 网络访问权限(用于下载依赖)
系统要求
硬件要求
- CPU: 4 核心以上(推荐 8 核心)
- 内存: 8GB 以上(推荐 16GB)
- 磁盘空间: 20GB 以上可用空间
- 网络: 稳定的互联网连接
支持的操作系统
- Linux: Ubuntu 18.04+, CentOS 7+, RHEL 7+
- macOS: 10.15+ (支持 Intel 和 Apple Silicon)
- Windows: Windows 10/11 with WSL2
架构支持
- x86_64 (AMD64)
- ARM64 (Apple Silicon, ARM 服务器)
注意: ARM64 环境可能需要额外的兼容性修复,详见《Polarion-Arm-环境修复》。
Polarion Dockerfile
以下是完整的 Dockerfile,支持多架构构建和动态版本选择:
1 |
|
Dockerfile 功能说明
这个 Dockerfile 实现了以下核心功能:
- 多架构支持: 自动检测 x86_64 和 ARM64 架构,下载对应的 JDK 版本
- 动态版本选择: 通过
POLARION_VERSION
参数指定要安装的 Polarion 版本 - 自动化安装: 使用 expect 脚本实现无人值守安装
- 环境优化: 预配置时区、语言环境和必要的系统工具
相关脚本说明
- pl_installer.sh: Polarion 安装脚本,处理安装过程中的交互
- auto_installer.exp: Expect 自动化脚本,用于无人值守安装
- pl_starter.sh: 容器启动脚本,负责启动相关服务
Polarion 启动脚本
以下是容器启动时执行的 pl_starter.sh
脚本:
1 |
|
启动脚本功能说明
这个脚本负责容器启动时的初始化工作:
- 时区设置: 配置为中国上海时区
- 服务启动: 启动 PostgreSQL 和 Apache 服务
- 配置更新: 动态更新 Polarion 配置文件
- 安全配置: 设置允许访问的主机列表
- REST API: 启用 REST API 和 Swagger UI
- CORS 支持: 配置跨域访问支持
注意: 脚本默认不自动启动 Polarion 服务,需要手动启动以便进行开发调试。
开发环境设置
使用 Docker 构建镜像后,Polarion 文件都在容器内部。为了便于开发,我们需要解决以下问题:
- 文件同步问题: 每次修改代码都需要复制文件到容器中
- 服务管理问题: 需要进入容器才能重启 Polarion 服务
- 权限问题: 容器内外的文件权限不一致
解决方案
我们使用 Docker volumes 功能将 Polarion 目录挂载到宿主机,并提供便捷的管理脚本。
仓库地址: Polarion_Docker_Development_Environment
快速开始
1 |
|
脚本功能特性
这个一键配置脚本提供以下功能:
- ✅ 完整环境配置: 自动配置 Docker 开发环境
- ✅ 卷挂载管理: 自动处理文件挂载和权限问题
- ✅ PostgreSQL 优化: 针对数据库的特殊权限要求进行优化
- ✅ 全局别名系统: 在任何目录都可以使用简短命令
- ✅ Shell 兼容: 自动检测 shell 类型并配置别名
- ✅ 工作流指导: 提供完整的开发工作流程说明
使用说明
快速开始
1. 运行配置脚本
1 |
|
2. 重新加载 Shell 配置
1 |
|
3. 启动服务(推荐使用全局别名)
1 |
|
4. 访问 Polarion
打开浏览器访问:http://localhost:8080/polarion
脚本功能选项
完整配置
1 |
|
执行完整的开发环境配置流程:
- 检查 Docker 和镜像
- 清理现有容器
- 配置挂载目录
- 初始化 Polarion 数据
- 修复所有权限问题
- 创建开发容器
仅修复权限
1 |
|
仅修复现有环境的权限问题,适用于:
- 权限配置出错时
- 升级系统后权限变化
- 手动修改文件后需要重置权限
仅创建全局别名
1 |
|
仅创建全局 shell 别名,适用于:
- 别名丢失或损坏时
- 需要重新配置全局命令时
- 更换 shell 或配置文件时
查看帮助
1 |
|
全局别名系统
配置完成后,会自动创建全局 shell 别名,让你可以在任何目录直接使用简短命令控制容器内的服务:
全局别名列表
polarion-status
- 检查所有服务状态polarion-start
- 启动 Polarion 服务polarion-stop
- 停止 Polarion 服务polarion-restart
- 重启 Polarion 服务postgresql-start
- 启动 PostgreSQL 服务postgresql-stop
- 停止 PostgreSQL 服务polarion-shell
- 进入容器polarion-exec
- 执行容器内命令polarion-logs
- 智能日志查看器(支持多种日志类型)
全局别名使用示例
1 |
|
开发工作流程
推荐工作流程(使用全局别名)
- 启动开发环境
1
1
1
1
./setup_polarion_dev_env.sh
- 重新加载 shell 配置
1
source ~/.zshrc # 或 source ~/.bashrc
- 检查服务状态(可在任何目录执行)
1
polarion-status
- 启动必要服务
1
2postgresql-start polarion-start
- 开发和调试
- 在宿主机
/opt/polarion
目录中修改文件 - 修改会立即反映到容器中
- 根据需要重启相应服务:
polarion-restart
- 在宿主机
- 停止服务
1
2polarion-stop postgresql-stop
传统工作流程(进入容器)
- 启动开发环境
1
1
1
1
./setup_polarion_dev_env.sh
- 进入容器
1
polarion-shell
- 启动必要服务
1
2
3sudo service postgresql start sudo service apache2 start sudo service polarion start
- 开发和调试
- 在宿主机
/opt/polarion
目录中修改文件 - 修改会立即反映到容器中
- 根据需要重启相应服务
- 在宿主机
- 停止服务
1
2
3sudo service polarion stop sudo service apache2 stop sudo service postgresql stop
目录结构
宿主机目录
- 配置目录:
/opt/polarion/etc/
- 数据目录:
/opt/polarion/data/
- 日志目录:
/opt/polarion/data/logs/
- 插件目录:
/opt/polarion/polarion/plugins/
- PostgreSQL 数据:
/opt/polarion/data/postgres-data/
容器内目录
所有目录都挂载到容器内的 /opt/polarion/
对应位置。
配置参数详解
环境变量
变量名 | 描述 | 默认值 | 示例 |
---|---|---|---|
ALLOWED_HOSTS |
允许访问的主机列表 | 无 | localhost,192.168.1.100 |
POSTGRES_PORT |
PostgreSQL 端口 | 5434 |
5432 |
TZ |
时区设置 | Asia/Shanghai |
UTC |
POLARION_VERSION |
构建时指定版本 | 自动检测 | 21R2 |
端口映射
容器端口 | 服务 | 描述 |
---|---|---|
8080 |
Polarion Web | 主要的 Web 界面端口 |
5434 |
PostgreSQL | 数据库服务端口 |
80 |
Apache | HTTP 服务端口 |
443 |
Apache SSL | HTTPS 服务端口(如果配置) |
权限说明
PostgreSQL 特殊权限
- PostgreSQL 数据目录权限:750 (必须)
- PostgreSQL 文件权限:640
- 这是 PostgreSQL 的安全要求,不能设置为 777
其他目录权限
- 配置目录:777 (开发需要)
- 工作空间目录:777 (开发需要)
- 日志目录:777 (开发需要)
故障排除
常见问题及解决方案
1. 容器启动后无法访问 Polarion
问题: 容器启动后无法访问 Polarion
1 |
|
解决方案:
- 确保所有服务都已启动
- 使用全局别名检查状态:
polarion-status
2. PostgreSQL 启动失败
问题: PostgreSQL 服务启动失败
1 |
|
解决方案:
- 检查 PostgreSQL 数据目录权限是否为 750
- 确保 postgres 用户拥有数据目录
3. 修改配置文件后不生效
问题: 修改配置文件后不生效
1 |
|
4. ARM64 架构兼容性问题
问题: 在 Apple Silicon 或 ARM 服务器上运行出错
解决方案: 参考《Polarion-Arm-环境修复》文章中的详细修复步骤:
1 |
|
5. 如何查看日志
问题: 需要查看各种日志进行调试
1 |
|
开发提示
- 文件修改: 直接在宿主机
/opt/polarion
目录中修改文件 - 配置更改: 修改配置后记得重启相应服务
- 插件开发: 插件文件放在
/opt/polarion/polarion/plugins/
目录 - 数据备份: 重要数据建议定期备份
/opt/polarion/data/
目录 - 资源管理: 开发完成后停止服务以释放系统资源
故障排除流程
如果遇到问题,按以下顺序排查:
- 检查 Docker 状态
1
2docker ps docker logs polarion22r1
- 检查权限
1
1
./setup_polarion_dev_env.sh fix-permissions
- 重新配置环境
1
1
1
1
./setup_polarion_dev_env.sh
- 查看详细日志
1
2docker exec -it polarion22r1 bash tail -f /opt/polarion/data/logs/main/polarion.log
版本兼容性
支持的 Polarion 版本
Polarion 版本 | 状态 | 备注 |
---|---|---|
21R2 | ✅ 完全支持 | 推荐版本,经过充分测试 |
22R1 | ✅ 完全支持 | 支持最新功能 |
22R2 | ✅ 完全支持 | 最新稳定版本 |
20R2 | ⚠️ 部分支持 | 需要额外配置 |
更早版本 | ❌ 不支持 | 建议升级到支持版本 |
架构兼容性
架构 | 状态 | 备注 |
---|---|---|
x86_64 (AMD64) | ✅ 完全支持 | 原生支持,性能最佳 |
ARM64 (Apple Silicon) | ✅ 支持 | 需要兼容性修复,参考 ARM 修复文章 |
ARM64 (服务器) | ✅ 支持 | 需要兼容性修复 |
操作系统兼容性
操作系统 | Docker 版本要求 | 状态 |
---|---|---|
Ubuntu 20.04+ | 20.10+ | ✅ 推荐 |
CentOS 8+ | 20.10+ | ✅ 支持 |
macOS 11+ | Docker Desktop 4.0+ | ✅ 支持 |
Windows 10/11 | Docker Desktop 4.0+ with WSL2 | ✅ 支持 |
升级注意事项
- 数据备份: 升级前务必备份 PostgreSQL 数据和 Polarion 配置
- 版本兼容: 检查插件和自定义代码的版本兼容性
- 测试环境: 先在测试环境验证升级流程
- 回滚计划: 准备回滚方案以防升级失败
总结
本文介绍了使用 Docker 搭建 Polarion 开发环境的完整方案,包括:
- 🐳 多架构 Docker 镜像构建
- 🔧 自动化安装和配置脚本
- 📁 开发环境卷挂载方案
- 🛠️ 常见问题故障排除
- ⚡ 性能优化建议
- 🔄 版本兼容性说明
结合《Polarion-Arm-环境修复》文章中的 ARM 兼容性修复方案,您可以在各种环境下快速搭建稳定的 Polarion 开发环境。
如果您在使用过程中遇到问题,欢迎参考故障排除章节或查看相关仓库的 Issues。