springboot 微服务 docker部署

664 阅读3分钟

创建base镜像

创建build镜像的配置文件
	
vi Dockerfile

写入以下内容:

FROM jre8
MAINTAINER  shizc
CMD ["sh","-c","/data/start.sh"]

jre8是一个提前创建好的有java运行环境的镜像,参考此文章:https://www.jianshu.com/p/26704b07b410
此文章是使用一个最小版本的linux镜像,大小只有12M多一点,最后生成的镜像只有120M左右。
算是一个最小的linux系统的jdk环境。
创建一个使用脚本启动jar包的基础镜像,这个镜像只是添加了一个执行脚本的命令。
最后一行的意思是容器启动后执行data目录下的start.sh脚本

build一个基础镜像出来:

docker build -t baseimage .
这样就可以创建一个名字为baseimage的基础镜像了,注意最后有一个"."点,不要落下。

创建项目根目录

mkdir zhsq

创建各个项目的目录

cd zhsq

mkdir eureka map right stats workflow zuul

此命令会创建出这几个同级目录

创建start.sh脚本

在每个项目目录下都创建一个此项目的start.sh脚本

vi start.sh

写入以下内容:
	
java -jar /data/app.jar

就是启动jar包的意思

给脚本赋予可执行权限

chmod +x start.sh

传输项目jar文件

把打包好的各个项目的jar包传到各自的文件夹内

启动各个项目

每个项目的文件夹内有一个自己的start.sh和项目的jar包
例:eureka目录中有以下文件.
	start.sh
	syzhproject-eureka-1.0.0.1-SNAPSHOT.jar
	两个文件
单个项目容器启动步骤:
	进入到项目文件夹内
	
	cd eureka
	docker run --name zhsq-euraka-7001 -v $PWD:/data -p 7001:7001 -d baseimage

编写初次启动的一键启动脚本

注意要使脚本可执行需要在写完脚本后执行命令:

    chmod +x start.sh

然后执行命令:

    ./startallfirst.sh
    就可以执行编好的脚本了。

在zhsq文件夹内创建一键启动脚本startallfirst.sh

vi startallfirst.sh

写入一下内容:
cd eureka
docker run --name zhsq-euraka-8001 -v $PWD:/data -p 8001:7001 -d baseimage
cd ../map
docker run --name zhsq-map-6014 -v $PWD:/data -p 6014:6014 -d baseimage
cd ../right
docker run --name zhsq-right-6013 -v $PWD:/data -p 6013:6013 -d baseimage
cd ../stats
docker run --name zhsq-stats-6015 -v $PWD:/data -p 6015:6015 -d baseimage
cd ../workflow
docker run --name zhsq-workflow-6019 -v $PWD:/data -p 6019:6019 -d baseimage
cd ../zuul
docker run --name zhsq-zuul-9527 -v $PWD:/data -p 9527:9527 -d baseimage

这样启动脚本就可以了,
此脚本适用于初次启动,后续如果项目代码进行了更新,
需要先使用命令:
    docker 容器name/容器id stop
    停止容器

然后把更新好项目jar与上次的jar包进行替换
然后使用命令:
    
    docker 容器name/容器id start
    启动容器

一键停止脚本

vi stopall.sh

docker stop zhsq-euraka-8001
docker stop zhsq-map-6014
docker stop zhsq-right-6013
docker stop zhsq-stats-6015
docker stop zhsq-workflow-6019
docker stop zhsq-zuul-9527

一键启动脚本

vi startall.sh

docker start zhsq-euraka-8001
docker start zhsq-map-6014
docker start zhsq-right-6013
docker start zhsq-stats-6015
docker start zhsq-workflow-6019
docker start zhsq-zuul-9527

如果只更新一个项目

例:只更新map项目

	使用命令:docker stop zhsq-map-6014
	停止map项目容器后,替换目录内的项目jar包
	替换完成后使用命令:docker start zhsq-map-6014
	即可完成单个项目的更新。