创建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
即可完成单个项目的更新。