jenkinsbuild docker镜像上传至仓库
时间: 2025-01-18 15:10:50 浏览: 49
### 将 Jenkins 构建的 Docker 镜像推送到 Docker 仓库
#### 准备工作
为了成功将构建好的 Docker 镜像推送到 Docker 仓库,需确保已安装必要的工具和插件,并配置好相应的环境变量。
- 安装 Docker 和 Maven 插件于 Jenkins 中。
- 获取目标 Harbor 或其他 Docker Registry 的访问凭证[^1]。
#### 创建 Jenkins Pipeline 脚本
编写 Groovy 脚本来定义 CI/CD 流程中的各个阶段。下面是一个简单的例子:
```groovy
pipeline {
agent any
environment {
DOCKER_REGISTRY = 'your.harbor.domain'
IMAGE_NAME = "spring-boot-app"
TAG = "${env.BUILD_NUMBER}"
CREDENTIALS_ID = 'harbor-credentials-id' // 在 Jenkins 中预先设置好的凭据 ID
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://gitlab.com/user/repo.git'
}
}
stage('Build with Maven') {
steps {
sh 'mvn clean package -DskipTests=true'
}
}
stage('Build Docker Image') {
steps {
script {
docker.build("${DOCKER_REGISTRY}/${IMAGE_NAME}:${TAG}")
}
}
}
stage('Push to Docker Repository') {
steps {
script {
docker.withRegistry("http://${DOCKER_REGISTRY}", "${CREDENTIALS_ID}") {
docker.image("${DOCKER_REGISTRY}/${IMAGE_NAME}:${TAG}").push()
}
}
}
}
stage('Tag as latest and push again'){
when{
expression{ return env.TAG ==~ /[0-9]+$/ && !params.SKIP_LATEST_TAG}
}
steps{
script{
def img = docker.image("${DOCKER_REGISTRY}/${IMAGE_NAME}:${TAG}")
img.push('latest')
}
}
}
}
}
```
此脚本涵盖了从源码检出、编译打包 Spring Boot 应用程序直到最终推送带有版本标签以及 `latest` 标签的 Docker 镜像到指定的私有库整个过程[^2]。
#### 启动容器并拉取镜像到本地运行
一旦镜像被成功推送到了远程仓库,在任何支持 Docker 的环境中都可以轻松地将其下载下来并启动服务实例:
```bash
docker pull your.harbor.domain/spring-boot-app:<tag>
docker run -d --name my-springboot-service -p 8080:8080 your.harbor.domain/spring-boot-app:<tag>
```
上述命令会先获取最新版的应用镜像再以后台模式启动它,并映射主机端口 8080 到容器内的相同端口号以便外部可以正常访问应用提供的 HTTP API 接口[^3]。
阅读全文
相关推荐

















