前言
本文记录使用 Coding (以 Jenkinsfile 为核心) 和 Docker 部署 Springboot 项目的过程,分享设置细节和一些注意问题。
1. 配置服务器环境
在实施此过程前,确保服务器已配置好 Docker、MySQL 和 Redis,可参考下列链接进行操作:
- Docker 安装图文细节
- MySQL 安装图文细节
- Redis 安装图文细节
2. 创建一个 Springboot 项目
示例项目:Ruoyi-Vue-Pro 开源框架
此框架需要 JDK、MySQL 和 Redis,参考官方文档完成配置。
环境配置:
- 以 JDK 21、MySQL 8.0、Redis 7.4 为例:
- 拉取代码,切换分支为
master-jdk17
(如需 JDK 8,则使用默认分支master
),完成 Maven 依赖下载。 - 修改配置文件:
- 将
application.yaml
中的spring.profiles.active
设置为dev
,确保配置文件同步。 - 根据服务器上实际的 MySQL 和 Redis 地址,修改
application-dev.yaml
配置。
- 将
- 测试配置:
运行项目,可访问 http://127.0.0.1:48080/ 确认是否正常启动,解决各种启动问题。
- 拉取代码,切换分支为
3. 将代码提交到 Coding
- 创建 Coding 本地仓库,实现将 Git 远程地址修改后上传。
- 确保已提交到指定分支。
4. 编写 Jenkinsfile 脚本
核心配置
- 选择构建计划:Java + Spring + Docker,按需配置流程和派配详情如下:
pipeline {
agent any
stages {
stage('检出') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: GIT_BUILD_REF]],
userRemoteConfigs: [[
url: GIT_REPO_URL,
credentialsId: CREDENTIALS_ID
]]])
}
}
stage('编译') {
agent {
docker {
reuseNode true
registryUrl 'https://coding-public-docker.pkg.coding.net'
image 'public/docker/openjdk:21-2024.03'
args '-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --entrypoint='
}
}
steps {
sh 'mvn clean install -DskipTests -Dmaven.test.skip=true'
}
}
stage('构建镜像并推送到 CODING Docker 制品库') {
steps {
script {
docker.withRegistry(
"${CCI_CURRENT_WEB_PROTOCOL}://${CODING_DOCKER_REG_HOST}",
"${CODING_ARTIFACTS_CREDENTIALS_ID}"
) {
echo "Current directory: ${env.WORKSPACE}"
dir('yudao-server') {
def dockerImage = docker.build("${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION}", "-f Dockerfile ${DOCKER_BUILD_CONTEXT}")
dockerImage.push()
}
}
}
}
}
stage('部署到远程服务') {
steps {
script {
def remoteConfig = [:]
remoteConfig.name = "my-remote-ltby"
remoteConfig.host = "${REMOTE_HOST}"
remoteConfig.port = 22
remoteConfig.allowAnyHosts = true
withCredentials([
usernamePassword(
credentialsId: "${REMOTE_CRED}",
passwordVariable: 'password',
usernameVariable: 'userName'
),
]) {
remoteConfig.user = userName
remoteConfig.password = password
sshCommand(
remote: remoteConfig,
command: "docker rm -f spring-boot | true",
sudo: true,
)
DOCKER_IMAGE_URL = sh(
script: "echo ${CODING_DOCKER_REG_HOST}/${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION}",
returnStdout: true
)
sshCommand(
remote: remoteConfig,
command: "docker run -d -p 48080:48080 --name spring-boot ${DOCKER_IMAGE_URL}",
sudo: true,
)
echo "部署成功,请访问 http://${REMOTE_HOST}:48080 查看效果"
}
}
}
}
}
}
environment {
CODING_DOCKER_REG_HOST = "${CCI_CURRENT_TEAM}-docker.pkg.${CCI_CURRENT_DOMAIN}"
CODING_DOCKER_IMAGE_NAME = "${PROJECT_NAME.toLowerCase()}/${DOCKER_REPO_NAME}/${DOCKER_IMAGE_NAME}"
}
}
5. 开始构建和测试
根据需求设置解决问题,确保部署正常。
6. 构建成功与访问
- 等待时间:一般构建需要 5-10 分钟,请耐心等待。
- 访问地址:访问部署的服务,地址格式为
http://<服务器IP>:48080
,例如:- 访问示例:http://xxx.xxx.xxx.xxx:48080 (将
xxx
替换为实际 IP)
- 访问示例:http://xxx.xxx.xxx.xxx:48080 (将
- 成功示例截图:
- 服务正常运行时的页面应如图所示。
完整细节篇:Coding + Docker + SpringBoot集成自动化部署
结束语
通过 Coding (Jenkinsfile) 集成 Docker 自动化部署 Springboot 项目,可以大幅提高开发与部署效率,尤其是对小型团队而言,集中管理代码和部署是一种高效方案。
——如果此文章对您有帮助,👏点赞支持一下!——