Docker和jenkins实现springboot自动部署
准备:
一个springboot项目、一台虚拟机(centos 7)。
安装:
- linux安装docker
更新yum:yum update

下载docker: yum –y install docker-engine

2、下载jenkins之前安装jdk:
查找所有jdk版本: yum -y list java*
找到正确得版本:

下载jdk:yum –y install java-1.8.0-openjdk-devel.x86_64
检查jdk版本: java –version
查找java位置:whereis java

3、下载jenkins:
yum的repos默认没有Jenkins,先将Jenkins加入存储库yum repos:
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
安装jenkins: yum –y install jenkins

配置jenkins: vi /etc/sysconfig/Jenkins
原本下图圈起部分为jenkins和8080,我们修改为root和9000(0:65535
中随便取,只要不端口未被其他进程占用)

部署与配置
1、启动docker:service docker start
2、启动jenkins:service jenkins start
3、ipconfig查ip
4、在浏览器输入ip:9000,进入初始页面

5、获取password: tail /var/lib/jenkins/secrets/initialAdminPassword

6、将密码拷入浏览器,continue
7、点击推荐安装插件、之后耐心等待安装

8、安装完成进入管理员注册页面、根据提示注册账号,进入。
Tips:如果忘了账号密码。
找到jenkins的config.xml: cd /var/lib/Jenkins

修改vi config.xml:删除下列部分:

9、如果git下不下来,那就去重下

选择可选插件,搜索git,下载即可。

如果还是不行,自己去找别的教程吧,或者有的时候你重新弄的时候发现你可以下载了。【狗头】
工程配置
1、工程根目录下新建Dockerfile。

FROM: 生成镜像的jdk环境 ADD 将target下的jar包加入镜像 VOLUME EXPOSE docker暴露给外界的端口80 ENTRYPOINT 启动app.jar
2、新建start.sh
cd `dirname $` #进入根目录 proj_home=$PWD #工程根目录
img_output=${image} #生成镜像标签
appname=${name} #容器名称
port= #docker暴露端口 # mvn打包镜像
docker run --rm doc--name my-maven-project -v /root/.m2:/root/.m2 -v "$PWD":/usr/src/mymaven -w /usr/src/mymaven maven:3.5.-jdk--alpine mvn clean install
# 获得docker容器 id和镜像 id
r_c=`docker ps -a | grep "$appname" | awk '{print $1 }'`
c=`docker ps -a | grep "$appname" | awk '{print $1 }'`
r_img=`docker images | grep "$appname" | awk '{print $3 }'`
# 如果容器正在运行,停止它
if [ "$r_c"x != ""x ]; then
docker stop "$r_c"
fi
# 删除容器
if [ "$c"x != ""x ]; then
docker rm "$c"
fi
# 删除镜像
if [ "$r_img"x != ""x ]; then
docker rmi "$r_img"
fi # 生成镜像
docker build -t $img_output .
# 日志目录
mkdir -p $PWD/logs
chmod $PWD/logs # 启动镜像 8086为工程的端口
docker run -d --name $appname -p $port: $img_output
Jenkins自动化配置
- 新建任务
输入任务名称、选择一个自由风格的软件项目。确定。

2.设置:找到源码管理:填入远程仓库http。
点击【添加】,添加认证:你的username和password。添加完毕后,返回选择即可。

3.构建触发器选择轮询SCM:每分钟检查代码是 * * * * * 。
圈起来的部分是轮询机制帮助

4.构建选择执行shell

填入命令:
cd /var/lib/jenkins/workspace/yifeng
./start.sh
点击保存。
5.查看
【立即构建】,然后点击最新的构建,进入。选择控制台输出



这样算成功了。可以在浏览器测试工程的接口了。
Tips:控制台输出第二行 是linux上的工作空间。 /var/lib/jenkins/workspace/${name}
最后
第一次构建可能比较久,日志会不一样,因为docker需要pull java:8和maven:3.5.0-jdk-8-alpine。如果是在日志上是卡到maven的话可以去网上查找docker拉取镜像加速的教程,多试几次就可以了。
Docker和jenkins实现springboot自动部署的更多相关文章
- 从Docker 到Jenkins 到Ansible的部署经验
从Docker 到Jenkins 到Ansible的部署经验 工作中,除了开发功能,还负责系统的部署工作.我从频繁的部署工作中,逐渐找到了一些偷懒的方法.从传统的Java -jar命令启动服务,到通过 ...
- 使用Docker构建持续集成与自动部署的Docker集群
为什么使用Docker " 从我个人使用的角度讲的话 部署来的更方便 只要构建过一次环境 推送到镜像仓库 迁移起来也是分分钟的事情 虚拟化让集群的管理和控制部署都更方便 hub.docke ...
- Jenkins spring boot 自动部署方案
原文地址:http://www.cnblogs.com/skyblog/p/5632869.html 现在主流的自动部署方案大都是基于Docker的了,但传统的自动部署方案比较适合中小型公司,下面的方 ...
- Jenkins下Vue自动部署(二)
1Jenkins配置 获取首次密码 sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword 2 2.1J ...
- Jenkins下Vue自动部署(一)
1,服务器上安装docker http://www.runoob.com/docker/ubuntu-docker-install.html?tdsourcetag=s_pctim_aiomsg 2, ...
- Jenkins 配置 SpringBoot 自动构建部署
服务器版本 Linux version 3.10.0-957.12.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8 ...
- Jenkins+Svn+Docker搭建持续集成环境 自动部署
一.准备工作: 两台服务器:192.168.206.212,192.168.206.213 自己新建一个maven项目 其中两台机子做下面的软件配置 212机子: 安装expect并配置: 安装jen ...
- Jenkins+svn+maven自动部署到tomcat
jenkins所在主机配置好,jdk,maven,Tomcat 1.配置maven,jdk环境 1) 进入配置界面--->[系统管理]--->[Global Tool Configurat ...
- 基于docker的gitlab+gitlabrunner+ansible自动部署
系统架构图 网络架构 一.安装docker,确保hostname没有问题 ,查看/etc/hostname./etc/hosts. https://docs.docker.com/engine/ins ...
随机推荐
- RSA 汇总
最近工作中遇到了RSA,这个,以前只是粗略的看了一下,结果,实际使用的时候,各种眼花缭乱啊.现在整理一下RSA有哪些相关知识. 1. RSA算法本身.算法本身的内容实际上是在pkcs#1的标准里面说明 ...
- mysql索引类型(按存储结构划分)
关于mysql索引类型,网上有很多相关的介绍,给人的感觉很乱.鄙人在翻阅相关书籍后,特意梳理了一下.哪里有不对的地方,欢迎指正! 1. B-Tree索引 它使用B-Tree数据结构来存储数据,实际上很 ...
- maven的两种打包插件 ,防止 将无用文件打入META_INF,找不到主类的问题
第三种 打依赖包 将依赖其他jar的包都打进去 <plugin> <artifactId>maven-assembly-plugin</artifactId> &l ...
- vue脚手架3
跟脚手架2安装都一样,已经安装脚手架2的要执行下面的命令 ,先删除 npm uninstall vue-cli -g 或 yarn global remove vue-cli 卸载 在执行下面的命令 ...
- MTK-TP(触屏)解读一
MTK中的TP代码结构并不复杂,相比于其他的系统更为的简单些.它使用的是input子系统,通过该系统来上报触摸按键. 首先我们来看看TP的文件夹下的各代码文件的功能. 文件名 具体功能 关系文件 tp ...
- Spark大型电商项目实战-及其改良(4) 单独运行程序发现的问题
之前的运行结果比对发现,有1个函数的作用在2个job里面是相同的,但是对应的计算时间却差太远 于是把4个job分开运行.虽说使用的数据不同,但是生成数据的生成器是相同的,数据排布差距不大,数据量也是相 ...
- Centos 7 安装 ELK 5.6.8 及基础的配置
下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.8.rpm wget https://ar ...
- UI自动化(十三)appium操作
定位: # id resource-id可能出现重复 如果appium-desktop提示了id 定位方式 说明id唯一driver.find_element_by_id('com.tencent.m ...
- Codeforces Gym 101623A - 动态规划
题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求划分成最少的段数,然后将这些段排序使得新序列单调不减. 考虑将相邻的相等的数缩成一个数. 假设没有分成了$n$段,考虑最少能够减少多少划分 ...
- ProtoType原型和__Proto__原型链的详解
var arr = new Array(12,13,14,15,16,17,18); var arr2 = new Array(12,13); arr.sun=function(){ //用原型加Ar ...