1.项目回顾
上篇文章中我们使用idea创建了springboot项目并且和mongo数据库整合。本篇将使用idea把springboot项目代码打包成jar包,使用容器将jar包构建成基础应用镜像并根据此镜像创建容器。
2.项目打包过程
打开上次的项目,右侧菜单选择maven,选择Execute Maven Goal按钮。
双击mvn clean 清理下代码环境。
然后重复之前操作,这次双击mvn package等待代码打包完成。
打包完成后生成target目录,里面有刚才打包好的jar包。
3.容器镜像构建过程
将“spring-boot2-0.0.1-SNAPSHOT.jar”包上传到容器服务器,服务器上创建目录。
目录结构如下:
root@VM-28-17-ubuntu:~# tree workdir/20240615/
workdir/20240615/
├── Dockerfile
└── target
└── spring-boot2-0.0.1-SNAPSHOT.jar
1 directory, 2 files
通过Dockerfile生成镜像。
FROM openjdk
VOLUME /tmp
ARG JAR_FILE=target/spring-boot2-0.0.1-SNAPSHOT.jar
ARG PORT=8080
ARG TIME_ZONE=Asia/Shanghai
ENV TZ=${TIME_ZONE}
ENV JAVA_OPTS="-Xms64m -Xmx256m"
COPY ${JAR_FILE} mytest.jar
EXPOSE ${PORT}
ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -server -jar mytest.jar
FROM
:指明我们基于某个镜像来打包,因为需要启动Java
应用,所以我们找了一个带JDK
环境的镜像。这就非常灵活了,有非常多带Java
环境的镜像,即使没有合适的,也可以自己做一个;ARG
:Dockerfile
构建时的参数;ENV
:环境变量;COPY
:把文件复制到新的镜像内;EXPOSE
:暴露端口,这样外部才能访问;ENTRYPOINT
:启动命令。
准备好了Dockerfile
后,就可以开始打包了:
$ mvn clean package
$ docker build -t test/springboot-mongo:0.0.1 .
等待构建完成后查看镜像
root@VM-28-17-ubuntu:~/workdir/20240615# docker image ls test/springboot-mongo
REPOSITORY TAG IMAGE ID CREATED SIZE
test/springboot-mongo 0.0.1 a6112999bd0e 4 hours ago 497MB
使用该镜像创建一个应用
docker run -d --name test-springboot -p 8080:8080 test/springboot-mongo:0.0.1
根据容器启动日志看容器是否启动成功。
说明Springboot
应用已经正常启动,并成功连接MongoDB
。
用Postman
做一个简单的测试,成功插入一条数据。
这是微软关于Docker
微服务的开发流程图,大体就是应用代码
——Dockerfile
——生成镜像
——容器编排服务
——运行
——测试
——提交
。
评论区