您现在的位置是:首页 > 博文答疑 > 测试Docker部署Spring Boot项目博文答疑
测试Docker部署Spring Boot项目
Leo2022-08-17【5】
简介Docker部署Spring Boot项目
闲来无事,测试下在Docker里,部署Spring Boot项目。
环境准备:
Linux下安装运行docker (建议用较新Linux内核版本下安装,老的CentOs有可能会给你惊喜哦)
IntelliJ IDEA (其他任意JAVA IDE也可以)
JAVA JDK 8
一,准备最简单的springboot项目 - HelloWord
1, pom.xml 中packaging 使用jar参数,因为我们需要把项目打包成jar包。
2,准备springboot的helloworld, 这里都写在一起做测试使用。
3,编译运行,测试成功后,可进入打包环节。
4,打jar包:下图中Maven - >Lifecycle -> clean -> pacakge, 就可以在target里看到jar 和jar.original文件。我们接下来会使用.jar文件,这个文件包含了所有的dependency 。jar.original文件没有dependency。
3,测试直接运行jar文件,测试jar文件是否可用.
java -jar demo-1.0.0.jar
二,项目准备好后,我们可以进入下一步,在docker“制作运行镜像”
1,准备一个build需要的docker文件,文件名:Dockerfile
# 基础镜像
FROM java:8
# 维护者信息
MAINTAINER Leo
#Default to UTF-8 file.encoding
ENV LANG C.UTF-8
#设置alpine时区
ENV TIMEZONE Asia/Beijing
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
#添加应用 将jar包添加到容器中并更名为demo.jar
ADD demo-1.0.0.jar demo.jar
#参数
#ENV PARAMS=""
#执行操作
RUN bash -c 'touch /demo.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]
2,上传我jar文件<demo-1.0.0.jar>和docker file<Dockerfile>。我放到/docker文件夹下面。
3, 制作镜像,看下图哦,最后有个“.”,表示当前目录。
docker build -t demo:1.0 .
4,查看镜像: docker images => 可以在下图中的demo
5, 查看当前的容器: docker ps =>查看是否有端口被其他容器占用的情况,我这里docker是新装了,还没有运行的容器。
6,启动容器: docker run -it -d --name demo -p 9090:8080 demo:1.0
我项目里配置端口为8080,这里用9090端口做映射。
7, 查看当前容器:docker ps =>可以看到我们的容器id和状态
8,测试下9090端口是否能连接 : curl localhost:9090/hello 如果能正常返回,则说明成功。
9,使用宿主机或者别的电脑浏览器访问宿主机的ip和端口9090。见下图:
遇到的坑:所有步骤的很顺利,但是最后发现我docerk容器和宿主机之间ping不通。原因很可能是centos
内核版本低。解决方法:重建docker 网桥 或者升级Centos内核版本。可以参考这两篇文章:1 :docker ping不通宿主机怎么办-Docker-PHP中文网 2: centos7 minimal 安装 &网络配置 - 博客园197 - 博客园 (cnblogs.com)
谢谢。