Jenkins部署Tomcat9 Java应用遇阻:自定义路径与WAR解压需求
解决Tomcat自定义docBase+Jenkins部署+Docker环境的问题
一、替换Jenkins Deploy to Container插件,用自定义部署脚本
插件的局限性无法适配你的场景,直接用Shell步骤或Pipeline命令实现灵活部署:
步骤1:Jenkins构建阶段解压WAR包
在Jenkins项目中添加构建步骤,解压生成的WAR文件到临时目录:
# 替换为你的WAR包实际路径和临时目录 mkdir -p /tmp/your-app-unpacked unzip target/your-app.war -d /tmp/your-app-unpacked
步骤2:同步解压文件到Tomcat自定义docBase路径
由于你的Tomcat运行在Docker容器中,且docker-compose已挂载应用目录卷(比如宿主机/opt/tomcat-custom-docbase挂载到容器内/usr/local/tomcat/custom-app,即Context指定的docBase),直接同步文件到宿主机卷目录:
# 同步文件,--exclude用于保留外部配置文件不被覆盖,替换为你的实际配置文件名 rsync -av --exclude='external-config.properties' /tmp/your-app-unpacked/ /opt/tomcat-custom-docbase/
步骤3:重启Tomcat容器(按需)
如果Tomcat未配置自动热部署,重启容器生效:
# 替换为你的docker-compose服务名 docker-compose restart tomcat-service
二、确认Tomcat Context与Oracle连接池配置
确保server.xml中Context和连接池配置正确:
<Context docBase="/usr/local/tomcat/custom-app" path="/your-app" reloadable="true"> <!-- Oracle数据库连接池配置 --> <Resource name="jdbc/OracleDB" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@//your-oracle-host:1521/ORCL" username="db-user" password="db-pass" maxTotal="100" maxIdle="20" minIdle="5" maxWaitMillis="10000"/> </Context>
注意:需将Oracle JDBC驱动包(如ojdbc8.jar)放入Tomcat的lib目录,可通过Docker卷挂载驱动包到容器内/usr/local/tomcat/lib。
三、Jenkins Pipeline部署示例
如果使用Pipeline,完整部署阶段可参考:
stage('Deploy to Tomcat') { steps { script { // 解压WAR包 sh 'mkdir -p /tmp/your-app-unpacked && unzip target/your-app.war -d /tmp/your-app-unpacked' // 同步到宿主机卷目录 sh 'rsync -av --exclude=\'external-config.properties\' /tmp/your-app-unpacked/ /opt/tomcat-custom-docbase/' // 重启Tomcat容器 sh 'cd /path/to/docker-compose-dir && docker-compose restart tomcat-service' // 清理临时目录 sh 'rm -rf /tmp/your-app-unpacked' } } }
四、关键注意事项
- 给Jenkins用户授权:将Jenkins用户加入
docker组,同时给宿主机卷目录设置合适权限(如chown -R jenkins:jenkins /opt/tomcat-custom-docbase)。 - 热部署配置:若无需重启Tomcat,可在Context中设置
reloadable="true",或通过Tomcat Manager API触发重载。 - 外部配置读取:确保应用代码能正确读取卷目录下的外部配置文件(如通过系统属性、环境变量指定配置路径)。
内容的提问来源于stack exchange,提问作者Majid Mortazavi
相关产品推荐
相关产品推荐

