以Docker为容器以SpringBoot为基础发布微服务或者web已经成为一种比较便捷的方式。本节来实现由Docker Git来快速发布一个基于SpringBoot的web项目。
默认已经完成了SpringBoot的hello world项目。
一. 实现原理
本地提交代码 -->推送的Git远程仓库-->Docker run提前构建好的镜像--> 启动镜像启动后执行命令去Git仓库拉去最新代码-->编译启动web项目
关于SpringBoot的启动方式:
SpringBoot项目的三种启动方式:1. IDE中直接运行 2. 打成jar包 执行java -jar 3.执行基于maven的mvn spring-boot:run
我们选用第三种 用maven来启动
二. 工程实现
1.创建远程代码仓库,把写好的hello world代码推送到远程
2.准备docker镜像环境
我这里使用DockerHub公共镜像idasound/centos7-jdk8作为基础镜像,该镜像默认环境为Centos7.x和jdk1.8
因为我们用到JDK Maven Git,所以需要在此基础上继续完善环境。
启动并进入基础镜像容器
docker run -it idasound/centos7-jdk8:latest
安装Maven和Git ,这里我写了个脚本 执行脚本来安装
#创建脚本目录
mkdir -p /data/script
vim install-mvn-git.sh
#赋可执行权
chmod -R 755 install-mvn-git.sh
#执行
./install-mvn-git.sh
#执行完成后验证
java -version
mvn -v
git --version
安装脚本:
# @Author: peizhouyu
# @Date: 2019-04-15 14:24:11
# @Last Modified by: peizhouyu
# @Last Modified time: 2019-04-15 16:41:36
#!/bin/bash
SOFT_PATH=/opt/soft
if [ ! -d $SOFT_PATH ];then
mkdir $SOFT_PATH
else
echo "文件夹已经存在"
fi
yum install -y wget
#install maven3.2.3
cd $SOFT_PATH
wget https://archive.apache.org/dist/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz
tar -zxvf apache-maven-3.2.3-bin.tar.gz -C $SOFT_PATH
mv apache-maven-3.2.3 maven-3.2.3
cd maven*
MAVEN_HOME=`pwd`
ln -s $MAVEN_HOME/bin/mvn /usr/bin/mvn
#install git 2.8.0
cd $SOFT_PATH
yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils- MakeMaker
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.8.0.tar.gz
tar -zxvf git-2.8.0.tar.gz -C $SOFT_PATH
cd git*
./configure
make install
ln -s /usr/local/bin/git /usr/bin/git
到此容器环境已经装好了,注意在退出容器前复制一下容器的id 即在容器内执行命令的时候左边的主机名
如下图 cd8af6361068:
执行exit退出容器,然后以此容器为基础创建基础环境镜像。
docker commit -m "install maven git" cd8af6361068 mrpei/centos7-jdk-mvn-git-base:v1
3.创建运行镜像
编写dockerfile文件:
FROM mrpei/centos7-jdk-mvn-git-base:v1
MAINTAINER peizhouyu
CMD rm -rf /data \
&& mkdir -p /data/web \
&& git clone https://peizhouyu%40vip.com:test123@gitee.com/peizhouyu/twchat.git \
&& cd twchat \
&& mvn spring-boot:run
构建执行镜像:
docker build -t "mrpei/twchat:v1" .
4. 启动容器
docker run -d -p 8820:8820 --name twchat-01 mrpei/twchat:v1
容器运行后需要拉代码构建,稍等几分钟 访问IP:8820 就可以看到我们的web内容了。