docker部署springboot应用

关于springboot部署的方式无外乎流行的jar以及传统的war。

环境:java8
情景:springboot部署
工具:intelliJ idea

war部署

关于war包部署,老生常谈,但由于springboot自带tomcat,故需在配置中去除:

org.springframework.boot
spring-boot-starter-tomcat
provided

或者在springweb依赖中exclude掉该依赖。

关于scope
1.何为scope?
scope是该依赖的作用域,用来指定依赖的作用范围。
2.scope的类型有哪些?
compile:默认,编译打包时会加进来
provided:编译测试时会加进来,打包不会,也是打war包时需要的
runtime:运行时可用
test:测试时可用
system:系统外引入jar
import:引入父类配置的依赖

补充:
由于打war包配置文件不会加载server.port与application.name,故需要配置finalName,不配置则默认工程名。

部署与常规部署无异。

jar部署

关于jar包部署,常见有两种方式:自动化部署与手动部署

自动化部署

可通过工具/插件来完成,例如Jekins,idea自带的docker插件。

jekins部署大家都知道,这里说下idea自带的docker插件:

1.插件下载与配置

idea插件库中找到docker下载,然后配置docker服务器地址:

idea springboot docker部署 springboot war 部署docker 中tomcat_jar


正常服务器安装docker后并没有暴露ip与端口,需要我们手动配置(新增ip与端口):

idea springboot docker部署 springboot war 部署docker 中tomcat_springboot_02


然后重启docker:

systemctl daemon-reload

systemctl start docker

防火墙暴露端口:

firewall-cmd --znotallow=public --add-port=2375/tcp --permanent

2.应用配置

首先,pom配置build中加入docker配置:

idea springboot docker部署 springboot war 部署docker 中tomcat_docker_03


目的为打包后jar放入Dockerfile同级目录

其次,Dockerfile文件的编写,可参考官方文档,这里作简单举例说明:
FROM java:8
VOLUME /tmp
ADD item-bank-service-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c ‘touch /app.jar’
ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8085
操作步骤包含不仅限于:
指定java版本->指定镜像目录->将jar包改名放入docker->更新时间->运行jar->暴露端口

说明:
jar包运行:java -jar xx.jar

最后,配置执行参数:

idea springboot docker部署 springboot war 部署docker 中tomcat_jar_04


其中,指定Dockerfile路径,配置镜像名与应用版本、容器名以及绑定的ip端口等。

执行顺序:先编译工程,打包,此时打包会将jar自动copy一份到docker文件同级目录下,然后执行如上配置后的启动脚本,会自动化一键构建镜像与容器(控制台可操作:查看日志、启停容器镜像等):

idea springboot docker部署 springboot war 部署docker 中tomcat_Dockerfile_05

手动部署:

相比较自动化部署,手动部署就需要我们亲自去执行docker的各种指令,手动上传jar至服务器
1.docker镜像同步
jar包上传后需要copy至容器内,可创建镜像自动操作,或者手动copy,然后启动。
这里因为使用了Dockerfile,所以直接构建docker即可:
docker build -t item-bank-service .
然后输入docker images可见镜像已构建完毕
随后启动镜像:
docker run -ti -d --privileged --net=host --name item-bank-service item-bank-service
服务启动完成。
日志查看:
docker logs -f item-bank-service
也可以进入docker容器后按照自己配置的log目录进行查看。

code源码:https://github.com/lovezmming/spring-development-projects/tree/master/item-ban