云原生应用11:SpringBoot应用打包成docker镜像
本文将介绍SpringBoot开发的应用打包成docker镜像,然后运行镜像为容器
依赖Docker:docker安装
依赖MySql:
- 下载mysql镜像,docker pull mysql:5.7.26
- 运行为容器,设置数据存储到宿主机,root用户密码:docker run -d --name mysql -v /data/mysql:/var/lib/mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.26
应用打包成docker镜像,使用Dockerfile文件,里面编写打包的指令,需要注意的是此应用用到了宿主机的目录存储文件
1.Dockerfile文件
把sisco.jar上传到服务器sisco目录,在sisco目录中创建Dockerfile文件,内容如下,依赖 openjdk 镜像,把当前目录的sisco.jar复制到镜像的/usr/目录中,定义一个PARAMS参数,运行镜像时添加自定义参数,如:-Dspring.profiles.active=default -DXms=300m 等
FROM openjdk:8-jdk-alpine
COPY ["sisco-0.0.1-SNAPSHOT.jar" , "/usr/"]
ENV PARAMS=""
ENTRYPOINT ["sh" , "-c" , "java $PARAMS -jar /usr/sisco-0.0.1-SNAPSHOT.jar"]
2.打包成镜像
docker打包镜像有两种方式,1.使用docker commit,2.使用Dockerfile文件,本文使用Dockerfile文件
在sisco目录中,执行命令:
docker build -t sisco:v0.1 ./
使用docker images 查看镜像
3.运行为容器
sisco目录中内容如下,有Dockerfile文件,有sisco.jar,sisco应用上传的文件存放到web目录中
start_mysql.sh内容:docker run -d --name mysql -v /data/mysql:/var/lib/mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.26
start.sh内容:docker run -d --name sisco --rm -v /home/sisco/web:/usr/web -p 8000:8080 -e PARAMS="-Dspring.profiles.active=prod -DXms=300m -DXmx=300m -Dsisco.config.filePath=usr/web/" sisco:v0.1
把运行mysql与运行sisco应用的命令放到对应的脚本文件中,只要执行:
- 启动mysql:sh start_mysql.sh
- 启动sisco:sh start.sh
start.sh的内容简单解释下:
- docker run,运行容器
- -d ,后台启动
- –name ,设置容器的名称
- –rm,容器停止时删除历史记录,否则通过sisco名称的容器还存在
- -v,定义宿主机目录与容器的映射关系,容器中的程序操作 usr/web 目录就是在操作宿主机的 /home/sisco/web 目录
- -p 8000:8080,宿主机8000端口绑定容器的8080端口
- -e PARAMS,为Dockerfile中预留的参数,可指定运行java应用需要的参数
- 最后为镜像名称为tag
查看运行中的容器,可看到容器绑定的端口
然后访问容器,http://192.168.68.134:8000