You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitLab CI/CD将WAR包部署到两台Tomcat实例?

部署Spring Boot WAR到两台Tomcat实例的GitLab CI/CD方案

方法一:单个Job中依次部署到两台服务器

通过SSH将构建好的WAR包分别传输到两台Tomcat服务器,前提是GitLab Runner已配置无密码SSH访问两台目标机器(将Runner的公钥添加到两台Tomcat服务器的~/.ssh/authorized_keys中)。修改.gitlab-ci.yml如下:

stages:
  - build
  - deploy

maven-build:
  stage: build
  script: "mvn package -B"
  artifacts:
    paths:
      - target/*.war

deploy-to-tomcats: 
  stage: deploy
  script:
    # 部署到第一台Tomcat服务器
    - scp target/testservice.war 你的用户@tomcat服务器1地址:/var/lib/tomcat9/webapps/
    # 部署到第二台Tomcat服务器
    - scp target/testservice.war 你的用户@tomcat服务器2地址:/var/lib/tomcat9/webapps/

方法二:拆分两个独立Deploy Job(支持并行部署)

将部署逻辑拆分为两个独立Job,同属deploy阶段,默认会并行执行,提升部署效率:

stages:
  - build
  - deploy

maven-build:
  stage: build
  script: "mvn package -B"
  artifacts:
    paths:
      - target/*.war

deploy-to-tomcat-1: 
  stage: deploy
  script:
    - scp target/testservice.war 你的用户@tomcat服务器1地址:/var/lib/tomcat9/webapps/

deploy-to-tomcat-2: 
  stage: deploy
  script:
    - scp target/testservice.war 你的用户@tomcat服务器2地址:/var/lib/tomcat9/webapps/

方法三:用GitLab变量管理服务器信息(便于维护)

在GitLab项目的「设置 → CI/CD → 变量」中添加服务器地址、用户名等变量(如TOMCAT_1_HOST、TOMCAT_1_USER、TOMCAT_2_HOST、TOMCAT_2_USER),之后在脚本中引用,避免硬编码:

stages:
  - build
  - deploy

maven-build:
  stage: build
  script: "mvn package -B"
  artifacts:
    paths:
      - target/*.war

deploy-to-tomcats: 
  stage: deploy
  script:
    - scp target/testservice.war $TOMCAT_1_USER@$TOMCAT_1_HOST:/var/lib/tomcat9/webapps/
    - scp target/testservice.war $TOMCAT_2_USER@$TOMCAT_2_HOST:/var/lib/tomcat9/webapps/

额外注意事项

  • 确保Tomcat服务器的/var/lib/tomcat9/webapps目录对部署用户有写入权限
  • 若需部署后重启Tomcat,可在scp后追加SSH命令,例如:ssh 你的用户@tomcat服务器1地址 "sudo systemctl restart tomcat9"(需确保部署用户有免密sudo权限)
  • 大体积WAR包推荐用rsync替代scp,增量传输更高效

内容的提问来源于stack exchange,提问作者Frank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:45:50