笔记【Jenkins集成Maven的Docker创建实现CI】

Dockerfile文件内容及位置

  • 文件所在的目录
    SpringBoot项目目录截图
  • Dockerfile内容
    FROM registry.cn-hangzhou.aliyuncs.com/ejy365/ejy-jdk8:2.0.4
    # 添加当前包
    ADD ./target/eureka-*.jar app.jar
    # 环境变量
    ENV HOST_NAME 127.0.0.1
    ENV DEFAULT_ZONE http://127.0.0.1:8761/eureka/
    # 暴露端口
    EXPOSE 8761
    # 作者信息
    MAINTAINER zangh <619144426@qq.com>
    

SpringBoot依赖配置

  • dockerfile-maven-plugin插件为 docker-maven-plugin(不再维护) 的升级版本。
    • 通过系统变量DOCKER_HOST可指定docker服务接口
    <plugin>
       <groupId>com.spotify</groupId>
       <artifactId>dockerfile-maven-plugin</artifactId>
       <version>1.4.10</version>
       <executions>
           <execution>
               <id>build-image</id>
               <goals>
                   <!-- 如果package时不想用docker打包,就注释掉这个goal -->
                   <goal>build</goal>
                   <goal>push</goal>
                   <goal>tag</goal>
               </goals>
           </execution>
       </executions>
       <configuration>
           <!-- 对应docker images下的REPOSITORY -->
           <repository>${docker.image.prefix}/${docker.project.artifactId}</repository>
           <!-- 对应docker images下的TAG,默认latest -->
           <tag>${project.version}</tag>
           <buildArgs>
               <JAR_FILE>target/${project.build.finalName}</JAR_FILE>
           </buildArgs>
       </configuration>
    </plugin>
    

Jenkins任务配置

构建自由风格任务
  • 选择参数配置化项目
    参数配置化截图

  • 如果存在多个jenkins运行节点,给每个节点打上一个或多个标签(相同的标签节点会自动成组)。通过选择标签制定任务只能在制定的jenkins节点上执行。
    运行节点截图

    • 例如有三个如下节点(当选择标签java时,则改jenkins任务只会在node01,node02上被执行):
      node01: centos java python
      node02: centos java nodejs
      node03: centos nodejs python
  • 配置托管源码的CVM
    Gitee配置

  • 配置maven构建参数
    maven相关配置

    • clean package命令打包后,dockerfile:build命令会使用Dockerfile文件通过DOCKER_HOST指定的docker服务接口打包成Docker镜像并调用docker push命令推送镜像到云端(如需认证,还要填写-Ddockerfile.username=xxx -Ddockerfile.password=yyy)。
  • 在目标节点上启动服务
    SSH发布插件截图

服务节点配置

环境准备
启动脚本
  • 以下以service-order服务为例的服务脚本:
    #!/bin/bash
    name=service-order
    cId=$(docker ps -a | grep $name | awk '{print $1}')
    echo "$name container id : $cId"
    
    if [ -n "$cId" ]; then
         sId=$(docker ps | grep $name | awk '{print $1}')
    
         if [ -n "$sId" ]; then
             echo "stop container id :"
             docker stop $sId
         fi
         
         echo "rm container id :"
         docker rm $cId
    fi
    
    echo "restart container"
    
    docker login --username=1801****403 --password=***** registry.cn-hangzhou.aliyuncs.com
    
    docker pull registry.cn-hangzhou.aliyuncs.com/ejy365/zanghcloud-service-order:1.0.0-SNAPSHOT
    
    docker run --name $name \
    --restart=always \
    -v /usr/local/www/services/order/logs:/ejy/logs \
    -p 9091:9091 \
    -e HOST_NAME="192.168.1.133" \
    -e DEFAULT_ZONE="http://admin:123456@192.168.1.130:8761/eureka/,http://admin:123456@192.168.1.131:8761/eureka/,http://admin:123456@192.168.1.132:8761/eureka/" \
    -e IP_ADDRESS="192.168.1.133" \
    -e jvmparams="-Xmx512m -Xms512m" \
    -e profile="test" \
    -d registry.cn-hangzhou.aliyuncs.com/ejy365/zanghcloud-service-order:1.0.0-SNAPSHOT
    

参考文档

《使用maven插件dockerfile-maven-plugin进行镜像的build和push》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值