使用 Jenkins 与 Docker 实现 Java 应用的自动化部署,是一种广泛采用的 DevOps 实践,能够显著提升开发与运维流程的效率与一致性。下面将详细介绍具体操作步骤及关键注意事项,帮助你顺利完成整个流程的搭建。

一、准备工作

在开始之前,请确保目标服务器已安装以下必要软件及环境:

  1. 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,按照引导完成初始化设置。

  2. 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
  3. Java JDK 安装
    使用 OpenJDK 8:

    bash

    sudo yum install java-1.8.0-openjdk
  4. 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

接下来创建一个自由风格的任务来自动化构建与部署流程:

  1. 新建任务:登录 Jenkins,点击 “新建任务”,输入任务名称并选择 “自由风格的项目”。

  2. 源码管理:在 “源码管理” 部分选择 Git,填写仓库地址并配置认证信息。

  3. 构建触发器:可配置为 “轮询 SCM” 或使用 “GitHub hook trigger” 实现提交自动触发。

  4. 构建环境:建议勾选 “Delete workspace before build starts”,确保每次构建环境干净。

  5. 构建步骤:添加 Maven 构建步骤,目标设置为 clean package。如需跳过测试,可附加参数 -Dmaven.test.skip=true

  6. 构建后操作:添加 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 链路。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐