Docker - 部署Java SpringBoot应用程序
第一步:首先得有一个spring boot的项目
第二步:项目打包为jar包,先clean清理,再package打包
找到项目根目录下的target目录,这里面的jar就是打包好可以部署的jar包
创建编写Dockerfile文件:
# Docker image for springboot file run # VERSION 0.0.1 # Author: 无心菜 # 基础镜像使用java FROM java:8 # 作者 MAINTAINER 无心菜 # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 将jar包添加到容器中并更名为app.jar ADD recordboot-0.0.1-SNAPSHOT.jar app.jar # 运行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
解释下这个配置文件:
VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。
/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
项目的 jar 文件作为 “app.jar” 添加到容器的
ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source
如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了。
部署文件
在服务器 /opt 目录下 创建 myProject 文件夹,将maven打包好的jar包和Dockerfile文件复制到服务器的docker文件夹下(可用WinSCP软件可视化操作)
mkdir myProject
在myProject项目下,创建项目对应文件夹 recordboot
mkdir recordboot
制作镜像
进入recordboot目录,执行下面命令, 看好,最后面有个"."点!
-t 参数是指定此镜像的tag名
docker build -t recordboot .
制作完成后通过docker images命令查看我们制作的镜像
启动容器
docker run --name recordroom -d --restart=always -p 8096:8095 recordboot
-d参数是让容器后台运行
-p 是做端口映射,此时将服务器中的8096端口映射到容器中的8095(项目中端口配置的是8095)端口
通过--restart选项,可以设置容器的重启策略,以决定在容器退出时Docker守护进程是否重启刚刚退出的容器。
--restart选项通常只用于detached模式的容器。
--restart选项不能与--rm选项同时使用。显然,--restart选项适用于detached模式的容器,而--rm选项适用于foreground模式的容器。
在docker ps查看容器时,对于使用了--restart选项的容器,其可能的状态只有Up或Restarting两种状态。
示例:
docker run -d --restart=always ba-208
docker run -d --restart=on-failure:10 ba-208
访问服务器网站:http://192.168.3.130:8096/Hello/Get
Docker 进入容器命令:
docker exec -it 775c7c9ee1e1 /bin/bash