Java Jenkins+Docker部署jar包
使用 Jenkins 与 Docker 实现 Java 应用的自动化部署,是一种广泛采用的 DevOps 实践,能够显著提升开发与运维流程的效率与一致性。下面将详细介绍具体操作步骤及关键注意事项,帮助你顺利完成整个流程的搭建。
一、准备工作
在开始之前,请确保目标服务器已安装以下必要软件及环境:
-
Jenkins 安装
推荐使用 Docker 方式快速部署 Jenkins:bash
docker pull jenkins/jenkins:lts docker run -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
启动后访问
http://<服务器IP>:8080,按照引导完成初始化设置。 -
Docker 安装
在 CentOS 系统上可执行如下命令安装 Docker:bash
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker
-
Java JDK 安装
使用 OpenJDK 8:bash
sudo yum install java-1.8.0-openjdk
-
Maven 安装
用于构建 Java 项目:bash
sudo yum install maven
二、配置 Jenkins
完成基础环境准备后,需对 Jenkins 进行相应配置:
-
安装必要插件:包括 Git Plugin、Maven Integration Plugin、Publish Over SSH Plugin 和 Docker Pipeline Plugin,以支持源码拉取、Maven 构建及 Docker 操作。
-
全局工具配置:在 Jenkins 的 “全局工具配置” 中正确设置 JDK、Maven 和 Git 的安装路径,确保构建过程中能调用相应命令。
三、创建 Jenkins Job
接下来创建一个自由风格的任务来自动化构建与部署流程:
-
新建任务:登录 Jenkins,点击 “新建任务”,输入任务名称并选择 “自由风格的项目”。
-
源码管理:在 “源码管理” 部分选择 Git,填写仓库地址并配置认证信息。
-
构建触发器:可配置为 “轮询 SCM” 或使用 “GitHub hook trigger” 实现提交自动触发。
-
构建环境:建议勾选 “Delete workspace before build starts”,确保每次构建环境干净。
-
构建步骤:添加 Maven 构建步骤,目标设置为
clean package。如需跳过测试,可附加参数-Dmaven.test.skip=true。 -
构建后操作:添加 Shell 脚本步骤,用于构建 Docker 镜像并启动容器,示例脚本如下:
bash
# 构建 Docker 镜像 docker build -t my-java-app . # 停止并删除旧容器(如有) docker rm -f my-java-app || true # 启动新容器 docker run -d --name my-java-app -p 8080:8080 my-java-app
四、编写 Dockerfile
在 Java 项目根目录创建 Dockerfile,内容如下:
Dockerfile
# 使用轻量级 OpenJDK 8 运行环境 FROM openjdk:8-jdk-alpine # 设置容器内工作目录 WORKDIR /app # 复制构建生成的 JAR 包到容器中 COPY target/my-java-app.jar /app/ # 声明应用运行端口 EXPOSE 8080 # 启动 Java 应用 ENTRYPOINT ["java", "-jar", "my-java-app.jar"]
五、测试与验证
完成上述配置后,可在 Jenkins 控制台点击 “立即构建” 启动流程。构建成功后,通过访问 http://<服务器IP>:8080 验证应用是否正常运行。
六、注意事项
-
安全配置:加强 Jenkins 与 Docker 的访问控制,避免未授权操作。
-
日志管理:为 Docker 容器配置适当的日志驱动(如
json-file或journald),便于问题排查与日志收集。 -
资源限制:使用
--memory、--cpus等参数限制容器资源使用,防止资源竞争影响系统稳定性。 -
数据备份:定期备份 Jenkins 工作目录与关键 Docker 镜像,确保系统可快速恢复。
通过以上流程,即可借助 Jenkins 与 Docker 实现 Java 应用的自动化构建、镜像打包与容器化部署,建立起高效、可复用的 CI/CD 链路。
更多推荐
所有评论(0)