Jenkins 自动打包java项目镜像摆设到服务器

[复制链接]
发表于 2025-10-19 20:45:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前置利用参考

Jenkins 自动打包项目镜像摆设到服务器 —(前端项目)
设置好git所在、账号凭据、长途实行token、买通jinkens服务器到目标服务器免密传输 等
Java Dockerfile
  1. # 使用 JDK 8 精简版镜像
  2. FROM frolvlad/alpine-java:jdk8-slim
  3. # 作者信息
  4. LABEL maintainer="flgb"
  5. # 设置环境变量
  6. ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
  7.     JAVA_OPTS="-Xms2048m -Xmx2048m -Dspring.profiles.active=uat"
  8. # 复制 JAR 包到容器内
  9. COPY xx-admin.jar /ky-admin.jar
  10. # 运行应用
  11. ENTRYPOINT exec java $JAVA_OPTS -jar /ky-admin.jar
  12. # 显示暴露端口
  13. EXPOSE 6088
复制代码
Shell脚本

  1. ##UAT_XX.Formula.Api和JOb名称保持一致
  2. codeRootDir="/data/jenkins/workspace/UAT_XX.Formula.Api"
  3. remoteHost="10.30.222.11"
  4. remoteRootDir="/data/boot/images"
  5. containerName="formula.api.uat"
  6. dockerImageName="img.formula.api.uat"
  7. #imageRootDir="/data/boot/images"
  8. # 到工作空间目录
  9. cd ${codeRootDir}
  10. # 执行打包命令
  11. mvn clean package -DskipTests
  12. echo "Building Docker image..."
  13. # cp Dockerfile 到打包路径下,方便后面生成镜像
  14. cp "${codeRootDir}/Dockerfile" "${codeRootDir}/XX-admin/target/"
  15. docker build -t "${dockerImageName}:latest" "${codeRootDir}/XX-admin/target/"
  16. echo "Docker image built successfully."
  17. echo "Saving Docker image to file..."
  18. # 压缩保存镜像,优化传输
  19. docker save "${dockerImageName}:latest" | gzip > "${codeRootDir}/${dockerImageName}.tar.gz"
  20. echo "Docker image saved successfully."
  21. echo "Uploading Docker image to server..."
  22. ssh root@"${remoteHost}" "mkdir -p ${remoteRootDir}"
  23. scp -C "${codeRootDir}/${dockerImageName}.tar.gz" root@"${remoteHost}":"${remoteRootDir}/"
  24. echo "Upload completed."
  25. echo "Deploying on remote server..."
  26. ssh root@"${remoteHost}" "
  27. cd ${remoteRootDir} &&
  28. gunzip -c ${dockerImageName}.tar.gz | docker load &&
  29. docker ps -q --filter 'name=${containerName}' | grep -q . && docker rm -f ${containerName} || true &&
  30. docker run -d --name ${containerName} -p 6088:6088 ${dockerImageName}:latest &&
  31. sleep 5 &&  # 等待 5 秒,确保容器启动
  32. docker ps -a | grep ${containerName}  # 检查容器状态
  33. "
  34. echo "Deployment completed."
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表