Docker部署SpringBoot项目
- 首先使用maven命令将项目打包为jar
mvn clean package -Dmaven.test.skip=true
- 编写Dockerfile文件
#基础镜像jdk
FROM java:8
#挂载的路径
VOLUME /tmp
#将jar打入镜像之中
ADD springboot-1.0.jar app.jar
#容器向外暴露的端口
EXPOSE 8080
#入口命令,执行jar
ENTRYPOINT ["java","-jar","/app.jar"]
- 将Dockerfile和jar放到同一目录下编译docker镜像文件,我是上传到linux中执行打包命令
[root@localhost springboot]# ll
总用量 0
-rw-r--r--. 1 root root 125 11月 9 22:20 Dockerfile
-rw-r--r--. 1 root root 123654 11月 9 22:21 springboot-1.0.jar
一定要保证jar包和Dockerfile在同一目录下,不然编译可能会报错,jar包名称和pom文件中的不一致也会导致下面这个错误一定要注意
ADD failed: stat /var/lib/docker/tmp/docker-builderXXXXXX: no such file or directory
执行下面的命令编译镜像
docker build -t springboot/config .
看到下图表示你的镜像已经编译成功
- 查看镜像是否生成
docker images
可以看到我们刚刚编译好的镜像文件
[root@localhost springboot]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot/config latest 0810de8da35a 56 seconds ago 643MB
- 启动镜像
第一个8080表示主机端口,第二个8080表示容器端口,springboot为容器名称,0810de8da35a为容器id
docker run -d -it -p 8080:8080 --name springboot 0810de8da35a
- 启动后查看jar包启动日志
docker logs -f springboot
另外看日志如果看到no main manifest attribute, in xxx.jar则原因为在编译的时候pom文件缺少一个配置,使用下面配置即可
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
- 删除容器
docker rm 容器id
删除前要先停止容器
docker stop 容器id
- 删除镜像
docker rmi 镜像id
教程到此结束----------------
如有疑问请留言