docker pull jenkins/jenkins:latest-jdk8
)在服务器上搭建好docker环境.如果没有搭建先搭建环境,如果不会请参考我另外一篇文章非常简单:
docker一键安装
也可以直接一键代码安装:
curl -sSL https://get.daocloud.io/docker | sh
启动:systemctl start docker
查看安装是否成功:
docker info
docker -v 查看版本
拉取镜像(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脚本进行构建镜像就比较麻烦.....
浏览器访问http://ip:8040 进入控制台
在宿主机里面输入:vi /data/jenkins_home/secrets/initialAdminPassword
即可查看密码
需要吧var 替换成data 因为宿主机挂载目录在这目录下
直接使用推荐安装即可
输入账号密码即可
进去之后,选择系统设置,插件管理 安装maven/jdk/gitee 插件
插件安装好后,安装jdk 和maven版本 在全局工具配置中设置如下:
选择新增jdk 我选择的1.8最新版 登录oracle账号密码
选择maven最新版本 并自动安装 最后点击应用
然后回首页 进入系统管理->系统配置 找到gitee:
生成令牌-直接在添加处有生成令牌的路径…这次就没有更多说明,比较简单
安装好之后构建项目(我项目名字叫demo,jenkins工程名字也叫demo 后面镜像名字也叫demo)
创建后进入改项目配置:
添加凭证(gitee的账号密码) 这图是下面一张图(源码管理)的添加凭证 弹框截图
进入项目中并设置
点击保存结束
点击立即构建(第一次比较慢.需要下面maven环境,和jdk 包等)
在任务中查看控制台输出
这个时候你会发现,你重新gitee提交manster分支代码.jenkins 中的demo项目就会自动构建…不妨测试测试~~
以上自动构建,已经完成.接下来实现自动构建镜像,并上传阿里云私有的镜像仓库
文件放在项目的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上去
选择个人版
自己需要稍微修改脚本的代码
#!/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)