将存放在gitee上项目,通过jenkins使用docker推送到阿里云私服上,并控制远程部署到其他服务

项目添加dockerfile

  • 在需要打包的工程的根目录添加Dockerfile文件,文件内容:

    # 设置JAVA版本
    FROM openjdk:8
    # 指定存储卷,任何向/tmp写入的信息都不会记录到容器存储层
    VOLUME /tmp# 拷贝运行JAR包
    ARG JAR_FILE
    COPY ${JAR_FILE} app.jar# 入口点。执行JAVA运行命令
    ENV JAVA_OPTS="
    -server
    -Xms256m
    -Xmx512m
    -XX:MetaspaceSize=256m
    -XX:MaxMetaspaceSize=512m"
    ENTRYPOINT java ${JAVA_OPTS} -jar /app.jar

  • 在pom上配置,添加打包插件,buildArgs中的JAR_FILE与Dockerfile文件中的${JAR_FILE}对应
    <plugin>
         <groupId>com.spotify</groupId>
         <artifactId>dockerfile-maven-plugin</artifactId>
         <version>1.3.6</version>
         <configuration>
             <repository>${project.artifactId}</repository>
             <buildArgs>
                 <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
             </buildArgs>
         </configuration>
     </plugin>
### 使用 Kubernetes 和 Docker 实现自动化部署的最佳实践 #### 创建 Jenkins 多分支流水线任务 为了启动项目,创建一个多分支流水线任务是必要的。这允许针对不同分支执行不同的构建逻辑[^4]。 #### 编写 Jenkinsfile 完成 CI/CD 流程定义 在项目的根目录下编写 `Jenkinsfile` 文件用于描述整个持续集成过程: ```groovy pipeline { agent any stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/user/repo.git' } } stage('Build and Push Image') { steps { script { sh './buildAndPush.sh myapp v1.0' } } } stage('Deploy to K8S') { steps { kubernetesApply( config: readFile('k8s/deployment.yaml'), kubeconfigId: 'kube-config-id' ) } } } } ``` 此脚本会依次检出代码库、调用外部 Shell 脚本来打包上传容器镜像到私有仓库以及应用配置更改至目标环境中的 Kubernetes 集群中[^2]。 #### 构建和推送 Docker 镜像 通过名为 `buildAndPush.sh` 的 shell 脚本处理 Docker 镜像的构建与推送工作。该脚本负责读取指定版本号作为参数,据此生成相应的标签名;接着登录远程 Harbor 私服地址完成身份验证以便后续操作能够顺利进行;最后一步则是清理不再使用的旧版本地缓存副本以释放空间资源。 #### 更新 Kubernetes 应用程序中的镜像 当新的镜像被成功推送到注册中心之后,在 Jenkins 中触发更新命令使正在运行的应用实例自动拉取最新版本重启服务从而达到无缝升级的效果。通常情况下只需要修改 Deployment 或者 StatefulSet 对象下的 image 字段即可实现这一点[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值