docker安装jenkins部署并且自动化打包部署java服务

一、准备docker环境


Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看CentOS的内核版本。(uname -a)

1.在安装docker 之前先要清除之前的版本

yum remove docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-engine

2.添加docker国内源

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.查看仓库中docker的版本,然后更新缓存并安装(如果要安装特定版本,可以在指定下载如:docker-ce-18.06.1.ce)

yum list docker-ce --showduplicates | sort -ryum makecache fast

yum -y install docker-ce-18.06.2.ce-3.el7

4.启动docker

systemctl start docker && systemctl enable docker

5.设置国内镜像加速器 vim /etc/docker/daemon.json

{

  "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"],

  "data-root": "",

  "log-driver": "json-file",

  "log-opts": {"max-size":"200m", "max-file":"3"}

}

systemctl daemon-reload && systemctl restart docker 重启docker

二、拉取jenkins最新的镜像,并且启动起来

1. docker pull jenkins/jenkins 默认拉取最新的版本

2. 创建jenkins的工作目录 最好创建到数据盘的目录下

mkdir -p /opt/jenkins

chmod 777 /opt/jenkins    赋予相应权限

3.启动jenkins镜像

docker run --restart=always -m 2048M -p 8081:8080 -p 50000:50000 -v /etc/localtime:/etc/localtime --name jenkins -v /opt/jenkins:/var/jenkins_home -d jenkins/jenkins:latest

下面是参数的详细解读

--restart docker的开机自启动

-m 2048M  给jenkins分配最大内存

-p 8081:8080  jenkins内部默认端口是8080,这里我们映射成我们自己定义喜欢的端口

-p 50000:50000 同上默认不能修改,修改后面会出错

-v  /etc/localtime:/etc/localtime  容器内部时区独立,同步宿主机和容器的时间

--name  jenkins  启动来的容器命名

-v /opt/jenkins:/var/jenkins_home 挂载逻辑卷目录  ,  /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 

docker ps  查看启动的容器。 状态为up启动成功,其他状态,使用docker logs jenkins 查看日志寻找问题

3.ip加端口在浏览器下访问,温馨提示:如果是云服务需要开通安全组8081和50000.关闭防火墙和selinux,物理机关闭防火墙和selinux  ,开通和关闭方法请百度

出现下面图片画面就是启动成功 



三、配置和使用jenkins

1.查看访问jenkins的密码

cat /opt/jenkins/secrets/initialAdminPassword  复制黏贴到上面访问的内容中

2.配置jenkins



选择第一个,推荐安装,如果出现无法连接jenkins,请查看上面更换本地源是否正确或者电脑网络问题选择重试



点击使用admin账号继续



保存并完成

后面开始使用jenkins

3.修改jenkins的admin账号密码





设置,下滑找到密码



修改完之后保存,重新登录

4.配置jenkins和安装一些必要的插件

首先安装必要的git、jdk、maven

系统管理<全局工具配置

git使用默认就行

jdk 点击新增jdk  取个别名jdk1.8 

路径是/opt/java/openjdk



以后的容器中的jenkins的jdk位置不知道会不会变,最好亲自进入容器查看

docker exec -i -t jenkins /bin/bash

echo $JAVA_HOME



maven 点击新增maven 取个名字 选择你要安装的maven版本



最后保存

再来安装一些插件:

系统管理<插件管理<可选插件  搜索插件Ant In Workspace  配置jdk+maven环境的插件

Publish Over SSH把文件通过ssh发布到服务器的插件

Maven Integration java项目构建

安装

配置Publish Over SSH

系统管理<系统设置  滑倒最下面配置Publish over SSH


点击新增





点击高级



点击使用密码或者密钥



三个填一个就行,有密码使用密码,至于密钥,云服务器如果有密钥对直接复制密钥就行,也可以用ssh-keygen,在复制到目标服务器上就行,具体操作不在这里细说,详情百度ssh密钥登入服务器



填完之后test一下,出现success即可。保存。

四、上面准备工作完成,现在让我们来构建一个项目。

新建任务<取一个项目名称构建一个maven项目


描述为测试项目

源码管理勾选git,填入代码地址,添加凭据,填写用户和密码



指定分支,可以填分支名称

构建触发器这里把原本的去掉





配置发布jar包规则





这上面的都是根据项目来填写,每个java项目存放jar包可能略微不同

最后保存完成。

现在我们在目标服务创建项目的路径,还有写dockerfile和启动镜像的脚本

cd  /opt/project

mkdir email

cd email

mkdir backup  存放jar包的备份  mkdir build    #jenkins远程传出jar包的路径    mkdir  docker  项目日志

vim  Dockerfile

  #使用的基础镜像

FROM java:8u111

#作者

MAINTAINER jiangming

#把当前目录下的jar包添加到镜像

ADD ./XXX.jar /usr/local/XXX.jar

#启动时运行jar包,并把日志输出到指定目录中

CMD java -server -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$HEAP_ERROR_PATH -jar -Duser.timezone=GMT+08 /usr/local/XXX.jar --spring.profiles.active=dev > /usr/local/logs/XXX.log  

XXX为项目名        dev为项目启动的环境

vim ps.sh            写发布脚本

#!/bin/bash

export BUILD_ID=dontKillMe

web=XXX

webdir=/opt/projects/XXX

date=$(date +%Y%m%d%H%M)

echo "####### 备份jar包 ##########"

cp $webdir/$web.jar $webdir/backup/$web-$date.jar 

rm -rf $webdir/$web.jar

mv $webdir/build/*.jar $webdir/$web.jar

echo "####### 删除当前容器 ##########"

docker stop $web #先停止容器运行

sleep 3

docker ps -a | grep $web|grep -v "grep"|awk '{print $1}' |xargs docker rm -f   #删除容器

sleep 1

echo "####### 删除当前镜像 ##########"

docker images |grep $web | grep -v "grep" | awk '{print $3}' |xargs docker rmi   #删除镜像

sleep 1

echo "####### 制作最新的当前镜像 ##########"

cd $webdir

docker build -t $web .       #执行dockerfile,生成项目镜像

sleep 3

echo "####### 启动当前最新的容器 ##########"

docker run -m 2048M --restart=always --network=host -v $webdir/docker/:/usr/local/logs/ -d --name=$web $web:latest 

sleep 2

echo "#######判断项目是否启动成功 ##########"

pid=`ps aux|grep $web|grep -v grep |grep -v "/bin/sh"| awk '{print $2}'`     #打印项目启动后的pid

#如果不存在返回1,存在返回0

if [ -z "${pid}" ]; then

echo "################################项目启动失败################################"

cat dsadsadas #使jenkins发布失败,导致构建项目不稳定

else

echo "################################项目启动成功#########################################"

fi

上面脚本和dockerfile只是借鉴操作,可以模仿中间出现问题请自行调整,也可以来本人

现在我们所有的准备工作都完毕。现在点击构建



打开控制台输出,

拉一些项目依赖jar包第一次有点慢,以后就不会了



success发布成功

现在去服务器底下docker ps ,查看服务有没有启动起来



项目服务已经up,说明启动成功,如果启动失败,可以docker logs email 查看日志,也可以去项目底下的docker目录查看日志





最后,有问题请教联系方式在主页

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容