(docker)手把手教学springboot maven项目根据jenkins自动打包,并自动构建镜像 并上传阿里云镜像仓库.

项目用到的技术或者工具

  • centos 7.x
  • jenkins(支持jdk1.8的最新版:docker pull jenkins/jenkins:latest-jdk8)
  • maven
  • jdk1.8(需要准备oracle账密.文档中java环境是自动下载安装—平时大家下载jdk 都需要登录账号)
  • docker
  • shell脚本
  • 阿里云镜像仓库
  • gitee
docker安装:

在服务器上搭建好docker环境.如果没有搭建先搭建环境,如果不会请参考我另外一篇文章非常简单:
docker一键安装

也可以直接一键代码安装:

curl -sSL https://get.daocloud.io/docker | sh

启动:systemctl start docker

查看安装是否成功:
docker info
docker -v 查看版本

jenkins安装:

拉取镜像(jdk1.8的现在最新版本不支持1.8了.):

docker pull jenkins/jenkins:latest-jdk8

也可以在这里面查找其他版本:docker-jenkins版本官网

创建挂载路径(目的是jenkins 容器使用宿主机器外面的文件目录):

mkdir -p /data/jenkins_home

给目录授权

chmod 777 /data/jenkins_home

启动容器:

docker run -d \
    -p 8040:8080 \
    -p 50000:50000 \
    --restart=always \
    --user root \
    -v /data/jenkins_home:/var/jenkins_home \
    -v /etc/localtime:/etc/localtime \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /usr/bin/docker:/usr/bin/docker \
    --name=jenkins \
    jenkins/jenkins:latest-jdk8

命令说明:
-d 保持后台运行
-p 映射端口,吧外部端口映射到内部
–restart=always 跟随容器启动 自动启动
–user root 以root身份进入jenkins中,在jenkins中能使用宿主机的权限
-v 挂载目录,jenkins容器中能视同宿主机的目录,因为jenkins打包后会指定docker 构建镜像所以-v要挂载docker
–name 容器名字

-v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ 这两个属性非常重要.因为构建会在jenkins中执行docker命令..然后会吧镜像构建在宿主机的docker环境中..不引入这个配置通过shell脚本进行构建镜像就比较麻烦.....

jenkins 配置

浏览器访问http://ip:8040 进入控制台

在宿主机里面输入:vi /data/jenkins_home/secrets/initialAdminPassword 即可查看密码
需要吧var 替换成data 因为宿主机挂载目录在这目录下

直接使用推荐安装即可

输入账号密码即可
进去之后,选择系统设置,插件管理 安装maven/jdk/gitee 插件

插件安装好后,安装jdk 和maven版本 在全局工具配置中设置如下:

选择新增jdk 我选择的1.8最新版 登录oracle账号密码

选择maven最新版本 并自动安装 最后点击应用

然后回首页 进入系统管理->系统配置 找到gitee:

生成令牌-直接在添加处有生成令牌的路径…这次就没有更多说明,比较简单

jenkins 项目构建

安装好之后构建项目(我项目名字叫demo,jenkins工程名字也叫demo 后面镜像名字也叫demo)

创建后进入改项目配置:

配置源代码(git)

添加凭证(gitee的账号密码) 这图是下面一张图(源码管理)的添加凭证 弹框截图

进入项目中并设置

源码管理

在这里插入图片描述

点击保存结束

首次构建项目

点击立即构建(第一次比较慢.需要下面maven环境,和jdk 包等)

在任务中查看控制台输出

在这里插入图片描述

这个时候你会发现,你重新gitee提交manster分支代码.jenkins 中的demo项目就会自动构建…不妨测试测试~~

以上自动构建,已经完成.接下来实现自动构建镜像,并上传阿里云私有的镜像仓库

构建docker镜像
Dockerfile编写

文件放在项目的src/main/resources 目录下 文件名:Dockerfile 内容如下:

FROM openjdk:8-jdk-alpine
MAINTAINER "伟帅啊"
LABEL description="demo项目自动构建镜像文本"
WORKDIR /www
ADD target/demo-0.0.1-SNAPSHOT.jar /app/app.jar
EXPOSE 8081
CMD java -jar /app/app.jar

编辑好之后,需要提交搞gitee上去

创建阿里云镜像仓库

在这里插入图片描述
选择个人版
在这里插入图片描述

在这里插入图片描述

在jenkins项目demo下的写入shell脚本

在这里插入图片描述

自己需要稍微修改脚本的代码

#!/bin/sh
#上传镜像

# 特别注意 如果是本机在运行这个项目...需要停止容器 并删除运行的容器
# docker stop demo
# docker rm demo

#删除本地镜像
echo "正在删除镜像..."
# 删除阿里云的镜像
DID=$(docker images | grep "自己阿里云上的命名空间/demo" | awk '{print $3}')
if [ -n "$DID" ]; then
  echo "正在删除阿里云镜像"
  docker rmi -f $DID
fi

# 删除本地镜像
DID=$(docker images | grep "demo" | awk '{print $3}')
if [ -n "$DID" ]; then
  echo "正在删除本地镜像"
  docker rmi -f $DID
fi

# 删除好这些东西后,我们准备构建镜像
echo "开始构建镜像...."
# 我们使用的一个插件来自动构建镜像  这个要修改为你自己项目路径..我叫demo. 你叫啥改啥
docker build -f /var/jenkins_home/workspace/demo/target/classes/Dockerfile -t demo:v1 .
echo "获取当前镜像id..."
# 我们获取我们构建好的镜像的id
DID=$(docker images | grep "demo" | awk '{print $3}')
echo "登录..."
docker login --username=你的账户名字 --password=你创建仓库设置的密码 registry.cn-shanghai.aliyuncs.com

echo "建立映射中..."
docker tag $DID registry.cn-shanghai.aliyuncs.com/自己阿里云上的命名空间/demo:v1
echo "镜像推送至阿里云仓库中..."
docker push registry.cn-shanghai.aliyuncs.com/自己阿里云上的命名空间/demo:v1
echo "自动化部署完成!"

#如果是单机运行....你还可以后面 直接 docker run  就能启动这个镜像 运行这个容器
#例如:docker run -d --name mydemo --restart=always -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime  -p 8021:8021 demo:v1
测试构建镜像

点击jenkins demo项目中的立即构建,监控控制台.显示构建成功

构建完成后,就能在阿里云上看到镜像上传版本和最新上传时间了
在这里插入图片描述

自动部署

现在jenkins 能自动通过maven环境 构建springboot项目成jar包.并自动构建成镜像,然后上传到阿里云私有仓库…接下来我们生产环境或者测试环境可能会有比较多的服务器…单台单台去 docker pull或者run 比较费人工…

如果我们通过一种手段自动部署容器…是不是很爽.

接下来等我下篇更新…如何根据jenkins 自动部署仓库容器(需要ssh远程执行脚本或者k8s)

根据ssh远程脚本方式发布更新项目

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一个开源的应用容器引擎,可以帮助开发者快速轻松地构建、部署和运行应用程序。它提供了一个隔离的环境,可以把应用程序和其依赖项打包成一个容器,使得应用程序在不同的环境中能够一致地运行。 Jenkins是一个开源的持续集成工具,它可以自动构建、测试和部署应用程序。通过与代码仓库的集成,Jenkins可以在代码发生变更时自动触发构建过程,帮助团队快速地检测和解决问题,提高开发效率。 GitLab是一个基于Git的开源代码托管平台,它提供了代码仓库管理、代码评审、问题跟踪、持续集成等功能。与其他代码托管平台相比,GitLab更加强调安全性和可扩展性,支持企业内部自建和云端部署,适用于团队协作和敏捷开发。 Maven是一个用于构建、管理和发布Java项目的工具。它通过一个配置文件描述项目的结构和依赖关系,可以自动下载并管理项目的依赖项,统一构建过程和产出,提高项目的可维护性和可复用性。 Spring Boot是一个基于Spring框架的开源Java开发框架。它的目标是简化Spring应用程序的开发和部署,并提供一套快速构建可独立运行的Java应用程序的解决方案。Spring Boot提供了自动配置、快速开发等特性,可以帮助开发者更加高效地开发和部署Spring应用程序。 综上所述,DockerJenkins、GitLab、MavenSpring Boot是一些常用的开发和部署工具,它们相互配合使用可以帮助开发者更好地进行应用程序的构建、测试和部署工作,提高开发效率和应用程序的质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值