Spring Boot学习总结(10)——SpringBoot打包成Docker镜像

<build>
<!--定义jar文件名,可以自定义-->
<finalName>${project.name}-${project.version}</finalName> 
<plugins> 
<plugin> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-maven-plugin</artifactId>
<!--指定主类,建议手动指定-->
<configuration> 
<mainClass>io.pumelo.HelloApplication</mainClass> 
</configuration> 
<executions>
<!--打包依赖到当前服务中-->
<execution> 
<goals> 
<goal>repackage</goal> 
</goals> 
</execution> 
</executions> 
</plugin>
<!--docker打包插件-->
<plugin> 
<groupId>com.spotify</groupId> 
<artifactId>docker-maven-plugin</artifactId> 
<version>0.4.11</version> 
<configuration>
<!--打包后的镜像名称,可以自定义-->
<imageName>${docker.image.prefix}/${project.artifactId}-${version}</imageName>
<!--基础镜像,包含oraclejdk8-->
<baseImage>frolvlad/alpine-oraclejdk8:slim</baseImage>
<!--java初始化参数,可以自定义-->
<entryPoint>[ "sh", "-c", "java -Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom -jar /${project.build.finalName}.jar" ]</entryPoint> 
<resources>
<!--需要打包进镜像的文件,还可以加其他的文件-->
<resource> 
<targetPath>/</targetPath> 
<directory>${project.build.directory}</directory> 
<include>${project.build.finalName}.jar</include> 
</resource>
</resources> 
</configuration> 
</plugin> 
</plugins>
</build>

在控制台中输入:mvn clean package -pl hello-service docker:build 即可打包出docker镜像。如果你的项目不是多模块的,那么去掉-pl 参数变为:mvn clean package docker:build ,多模块需要指定模块。


发布了810 篇原创文章 · 获赞 3117 · 访问量 330万+
展开阅读全文

请问,docker部署后如何修改spring boot 的应用配置文件?

06-05

  我是个java开发菜鸟,以前一直维护的是spring mvc+tomcat在linux的web项目,最近在学习spring boot +docker(docker-compose),试图改造我手上的Web项目,但遇到一个问题百思不得其解,还希望哪位大神伸手援助。   先说说我的需求,很简单,以前维护pring mvc+tomcat的时候,只是先在Linux部署tomcat、mysql等组件,然后将我的spring应用放至tomcat/webapps下就可以正常运行,因为部署环境不同,该应用经常需要根据现场实际情况,修改web的config等配置文件然后重启,如果应用报错还可以在指定目录下查看项目打印的各类log日志(log4j输出不同的日志)。虽然前期部署麻烦了一些,但有安装脚本什么的,维护起来也方便。  这段时间接触了spring boot +docker以后,也能够将应用通过docker(docker-compose)方式部署起来,但后续的问题怎么也搞不定,比如我想修改应用配置文件中的某一参数,然后重启docker容器就可以正常运行项目,但不知道如何修改application.xml。   我能想到的方法有三种:   1、通过volume将tomcat映射出来,docker-compose配置如下 ``` #docker-compose的版本 version: '3' #定义服务 services: #服务名称,可随意定义 gwqserive: build: #dockerfile的路径 context: gwqapp #dockerfile的名称 dockerfile: appDockerfile #相当于docker run -v的作用 volumes: - "./jar:/tmp" #容器名称 container_name: gwq-compose-app-container #该服务依赖的其他服务,该配置选项可修改启动顺序 depends_on: - mysqldbserver - redisServer links: - mysqldbserver - redisServer ``` appDockerfile: ``` FROM java:8-jre-alpine #维护者信息 MAINTAINER Gaowq VOLUME /tmp ADD SpringBootRedisDemo-0.0.1-SNAPSHOT.jar app.jar #为构建镜像设置监听端口,使容器在运行时监听 EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 好吧,然后容器运行以后,前往/tmp或jar目录下,发现全是tomcat缓存类似的文件,没啥用,跟之前的webapps完全不是一回事  2、想docker exec进去看看,然后。。。一脸meng bi!完全不知道需要的文件在哪  3、我能想到的方式,就是修改好应用配置文件,重新打包jar生成新的镜像,但。。。未免有点太复杂了吧!而且也没有解决我获取不同各类log4j日志的问题。   因为项目最终打包完毕后,将交于专门技术人员安装与维护,故上述情况经常会遇到,由于本人技术太菜,还请各位大神不吝赐教!谢谢! 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览