脚本自动化部署docker微服务,取代Jenkins
由于Jenkins容器化部署,容器容器之间拷贝文件及其繁琐,如果在Jenkins部署在系统外层也需要配置复杂的流程才能实现微服务的自动化部署,本文主要通过脚本方式取代Jenkins实现自动化部署。脚本方式简单快捷,可以快速实现微服务部署、升级,避免Jenkins占用内存。一、准备环境1. 硬件环境centos7.52. 软件环境docker、jdk、maven(如果是gradle项目则安装grad
由于Jenkins容器化部署,容器容器之间拷贝文件及其繁琐,如果在Jenkins部署在系统外层也需要配置复杂的流程才能实现微服务的自动化部署,本文主要通过脚本方式取代Jenkins实现自动化部署。脚本方式简单快捷,可以快速实现微服务部署、升级,避免Jenkins占用内存。
一、准备环境
1. 硬件环境
centos7.5
2. 软件环境
docker、jdk、maven(如果是gradle项目则安装gradle)、git
二、安装软件
1.安装docker
下载依赖
yum -y install yum-utils device-mapper-persistent-data lvm2
设置镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
yum makacache fast
yum -y install docker-ce
启动docker
systemctl start docker
设置开机启动
systemctl enable docker
2.安装jdk
yum install java-1.8.0-openjdk.x86_64
查看是否可用
java -version
3.安装maven
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven
检查是否可用
mvn -version
4.安装git
yum install -y git
二、建立工作空间
首先定义/home目录为我们的工作空间,在这个工作空间下我们需要建立Gitspace、DockerBuilder、Shell这三个文件夹
1.Gitspace
代码工厂,用来存储各个项目的代码
2.DockerBuilder
Docker构建工厂,用来放置各个项目的dockerfile文件,生成docker镜像
3.Shell
用来存放启动脚本,意见化启动部署微服务
三、操作步骤
1.克隆代码
进入Gitspace目录,然后克隆我们需要自动化部署的项目
cd /home/Gitspace
git clone git clone http://xxxxx/xxxx/xxxxx.git
2.配置Git免密拉取
进入Gitspace下的项目目录,然后ls -a可以看到有个.git的隐藏文件夹
vim .git/config
然后添加上下边两行
[credential]
helper = store
3.编写dockerfile
进入/home/DockerBuilder目录新建项目文件夹,然后新建项目的dockerfile文件
FROM openjdk:8
MAINTAINER NETGATE
LABEL app="hb-server" version="0.0.1" by="eric"
COPY ./hb-server-0.0.1-SNAPSHOT.jar hb-server.jar
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
CMD java -jar hb-server.jar
4.编写shell脚本
进入/home/Shell文件夹,新建test.sh脚本
#!/bin/bash
#auth eric
#date 2021-12-13
#*********脚本入参#*********
appname=hb-server
#Git源码位置
gitsrc=/home/GitSpace/$appname
#Docker脚本位置
dockersrc=/home/DockerBuilder/$appname
#*********脚本入参#*********
cd $gitsrc && git pull origin master && mvn install -DskipTests
if [ $? -eq 0 ];
then
echo "maven build success "
else
echo -e '\033[31m[ error ] gradle build faild \033[0m' && exit 1
fi
\cp -f $gitsrc/target/*.jar $dockersrc
echo '第二步:查看是否有镜像'
cd $dockersrc
imageresult=$(docker images |grep $appname | wc -l)
echo $imageresult
if [ $imageresult -eq 0 ];
then
echo "不存在镜像,需要重新初始化鏡像";
docker build -t $appname .
docker run -d --name $appname -p 8003:8003 --restart always $appname
else
conid=$(docker ps |grep $appname |awk '{print $1}')
docker cp *.jar $conid:/$appname.jar
docker restart $conid
if [ $? -eq 0 ];
then
echo "发布成功!"
else
echo -e '\033[31m[ error ] 发布失败 \033[0m' && exit 1
fi
fi
5.执行shell脚本
sh test.sh
更多推荐
所有评论(0)