java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Jenkins一键部署Java应用远程Docker服务器

Jenkins一键部署Java应用远程Docker服务器完整步骤

作者:油墨香^_^

还在手动部署Java应用到远程Docker服务器?本文为你详细讲解两种主流方案:基于SSH的部署和Docker Pipeline插件部署,你将学会如何配置Jenkins、编写部署脚本和Dockerfile,以及提升构建效率、管理镜像版本等最佳实践,跟着步骤操作,轻松实现一键部署,保证环境一致性

使用 Jenkins 一键将 Java 应用部署到远程 Docker 服务器,能显著提升部署效率并保证环境一致性。下面我将为你梳理核心的实现步骤、不同方法的选择以及一些最佳实践。

为了让你能快速把握整体流程,下图描绘了从代码提交到应用部署的完整步骤:

部署方案与操作步骤

实现一键部署,主要有两种方式:基于SSH的传统方式和使用Docker Pipeline插件。你可以根据技术熟悉度和项目需求选择。

方法一:基于SSH的部署

这种方法适合对脚本控制有偏好,或者部署环境对网络隔离有严格要求的场景。其核心是通过SSH连接并控制远程服务器。

1. 环境与插件准备

2. 准备构建脚本

在Jenkins项目中配置构建后操作,使用 Send build artifacts over SSH。

关键是在远程服务器上准备一个部署Shell脚本,通常需要完成以下任务:

#!/bin/bash
# 定义项目名和端口
PROJECT_NAME="my-java-app"
PORT=8080
# 停止并删除旧容器
docker stop $PROJECT_NAME || true
docker rm $PROJECT_NAME || true
# 删除旧镜像(可选,避免重名导致构建失败)
# docker rmi $PROJECT_NAME || true
# 构建新镜像(假设Dockerfile和jar包已通过SSH传输到指定目录)
docker build -t $PROJECT_NAME .
# 运行新容器
docker run -d -p $PORT:8080 --name $PROJECT_NAME $PROJECT_NAME

注意:脚本中的 || true 是为了防止因容器或镜像不存在而导致脚本执行中断。

3. 准备Dockerfile

在你的Java项目根目录下,需要一个Dockerfile来指导Docker构建镜像。一个基础的示例如下:

# 选择基础镜像
FROM openjdk:8-jdk-alpine
# 设置工作目录
WORKDIR /app
# 将Maven打包好的jar包复制到容器中
COPY target/my-app.jar app.jar
# 声明应用运行端口
EXPOSE 8080
# 启动Java应用
CMD ["java", "-jar", "app.jar"]

方法二:使用Docker Pipeline插件

如果你希望更原生、更灵活地控制Docker,并且项目已在使用Jenkins Pipeline,那么这种方式更适合。它能让你在Jenkinsfile中直接使用Docker命令。

1. 安装插件

在Jenkins中安装 Docker Pipeline 插件。

2. 编写Jenkinsfile

在你的项目根目录创建一个Jenkinsfile,使用类似以下的脚本化流水线语法:

node {
    checkout scm // 拉取代码
    // 定义镜像名称,使用构建ID区分版本
    def customImage = docker.build("my-java-app:${env.BUILD_ID}")
    // 你可以选择在此处运行集成测试
    // customImage.inside { sh 'make test' }
    // 推送镜像到镜像仓库(可选,需要先配置凭据)
    // customImage.push()
    // 在远程Docker服务器上运行容器
    docker.withServer('tcp://你的远程docker服务器:2376', 'docker-host-cert') {
        // 注意:这里假设远程Docker守护进程开启了远程API访问
        customImage.run("--name my-running-app -d -p 8080:8080")
    }
}

重要安全提示:直接暴露Docker的2375/2376端口存在安全风险。务必配合TLS证书认证使用,并在withServer方法中指定证书ID。

最佳实践与注意事项

为了让你的部署流程更稳健可靠,请参考以下几点:

关注安全配置:

方案选择与总结

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文