区块链技术博客
www.b2bchain.cn

Jenkins 集成docker 插件,实现热spring项目部署

这篇文章主要介绍了Jenkins 集成docker 插件,实现热spring项目部署的讲解,通过具体代码实例进行19670 讲解,并且分析了Jenkins 集成docker 插件,实现热spring项目部署的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=19670

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

Jenkins 集成docker 插件,实现热spring项目部署

      • 流程图
      • jenkins 全局配置
      • 搭建Docker Registry (私有仓库,用于存储docker images)
      • 项目配置

流程图

build Success

push success

通过 Git 拉取源码

maven 编译打包

编译成功

Docker build

docker push

清除本地image

连接远程服务器进行 docker pull及run


jenkins 全局配置

  • jdk 配置(yum 安装)
    Jenkins 集成docker 插件,实现热spring项目部署
  • git 配置(yum 安装)
    Jenkins 集成docker 插件,实现热spring项目部署
  • maven 配置,需要自行下载解压
    Jenkins 集成docker 插件,实现热spring项目部署
  • docker 配置(yum安装)

Jenkins 集成docker 插件,实现热spring项目部署

  • Jenkins 系统配置
    Jenkins 集成docker 插件,实现热spring项目部署
  • docker 服务配置(需要先开启docker外部访问端口)
    Jenkins 集成docker 插件,实现热spring项目部署
  • 开启docker外部访问端口
    • vim /lib/systemd/system/docker.service
    • 在 ExecStart 行增加 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 最终如下:
ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock            --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current            --default-runtime=docker-runc            --exec-opt native.cgroupdriver=systemd            --userland-proxy-path=/usr/libexec/docker/docker-proxy-current            --init-path=/usr/libexec/docker/docker-init-current            --seccomp-profile=/etc/docker/seccomp.json            $OPTIONS            $DOCKER_STORAGE_OPTIONS            $DOCKER_NETWORK_OPTIONS            $ADD_REGISTRY            $BLOCK_REGISTRY            $INSECURE_REGISTRY            $REGISTRIES                                             修改后 重启docker:  1、重启守护进程 systemctl daemon-reload  2、重启docker service docker restart  3、用浏览器访问验证 http://ip:2375/images/json 

搭建Docker Registry (私有仓库,用于存储docker images)

docker pull registry  创建本地用于存放镜像的目录,然后映射到仓库的目录中  cd /usr mkdir docker-registry docker run -d -v /usr/docker-registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry   vim /etc/docker/daemon.json   添加如下配置 { "insecure-registries" : ["10.10.10.224:5000"] }  重启docker使之生效  systemctl daemon-reload  systemctl restart docker 

项目配置

  • jenkins 新建一个 maven 项目

  • 配置项目构建历史保存设置(建议加上此配置,否则历史编译文件会占用服务器空间)
    Jenkins 集成docker 插件,实现热spring项目部署

  • 配置项目仓库地址,我采用了git账号密码的方式,当然也可以使用 ssh 方式拉取源码
    Jenkins 集成docker 插件,实现热spring项目部署

  • 项目编译设置

    • 跳过测试环节 clean package -Dmaven.test.skip=true
      Jenkins 集成docker 插件,实现热spring项目部署
  • docker image编译,及push 配置
    Jenkins 集成docker 插件,实现热spring项目部署
    Jenkins 集成docker 插件,实现热spring项目部署
    Jenkins 集成docker 插件,实现热spring项目部署

  • 执行脚本如下:针对不同的项目只需要修改上部定义的三个变量加映射端口的配置

BUILD_ID=DONTKILLME  IMAGE_NAME=10.10.10.224:5000/docker.io/eureka TAG=latest CONTAINER_NAME=eureka  #判断是否存在已启动的容器,有则停止并删除 CONTAINER_ID=`sudo docker ps | grep ${CONTAINER_NAME} | awk '{print $1}'` if [ -n "$CONTAINER_ID" ]; then     sudo docker stop $CONTAINER_ID     sudo docker rm $CONTAINER_ID else #如果容器启动时失败了,就需要docker ps -a才能找到那个容器     CONTAINER_ID=`sudo docker ps -a | grep ${CONTAINER_NAME} | awk '{print $1}'`     if [ -n "$CONTAINER_ID" ]; then  # 如果是第一次在这台机器上拉取运行容器,那么docker ps -a也是找不到这个容器的         sudo docker rm $CONTAINER_ID     fi fi  # 删除历史 image IMAGE_ID=`sudo docker images | grep ${IMAGE_NAME} | awk '{print $3}'` if [ -n "${IMAGE_ID}" ];then     sudo docker rmi ${IMAGE_ID} fi  echo "----------------pull docker.io/eureka:latest---------------------" sudo docker pull ${IMAGE_NAME}:${TAG}  echo "----------------run docker.io/eureka:latest---------------------" sudo docker run -d -p 8761:8761 --name ${CONTAINER_NAME} ${IMAGE_NAME}:${TAG} 
  • 附上项目的 Dockerfile 脚本 (JVM 参数可根据实际需求自行调整,我的配置只可参考)
FROM openjdk:8-jre-alpine ENV LANG en_US.UTF-8 ENV JAVA_OPTS "-XX:InitialHeapSize=521m -XX:MaxHeapSize=521m -XX:NewSize=362m -XX:MaxNewSize=362m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=10 -XX:ThreadStackSize=1m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=logs/" WORKDIR /app RUN rm -rf /etc/localtime && ln -svf /usr/share/zoneinfo/Asia/Shanghai /etc/ ENV APP_NAME dg-eureka.jar ENV APP_PATH target # 将当前项目的jar包添加到容器中 ADD "$APP_PATH/$APP_NAME" "$APP_NAME" EXPOSE 8761 ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom -jar /app/$APP_NAME"] 

至此,咱们的项目已经配置完成,可以正常的拉取、编译、docker build、push
然后通过ssh插件在其他服务器进行 docker pull,docker run 启动项目

Jenkins 集成docker 插件,实现热spring项目部署
Jenkins 集成docker 插件,实现热spring项目部署
Jenkins 集成docker 插件,实现热spring项目部署
Jenkins 集成docker 插件,实现热spring项目部署
Jenkins 集成docker 插件,实现热spring项目部署

本文转自互联网,侵权联系删除Jenkins 集成docker 插件,实现热spring项目部署

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Jenkins 集成docker 插件,实现热spring项目部署
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

© 2021 b2bchain区块链学习技术社区   网站地图