2020-05-25—SpringBoot-Maven多模块项目Docker化

1、在开发好的Maven多模块化工程中,选择系统主入口模块,添加maven-docker-plugin。

<!--springBoot 工程docker化部署-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>ipdrpmg/micro</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

2、在对应的${project.basedir}/src/main/docker 下创建Dockerfile文件。脚本如下:

FROM docker.io/relateiq/oracle-java8
VOLUME /tmp
ADD ipdrpmg.jar app.jar
#RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8881

关于Dockerfile指令详细解析,推荐比较不错的博客:https://blog.csdn.net/qq_29999343/article/details/78318397

3、把工程上传到 linux 环境并打包生成工程镜像

在 pom.xml 文件目录下执行指令

$ mvn package docker:build 

这个指令就会根据 Dockerfile 的内容来生成镜像

然后根据镜像来启动容器

# 8081 是工程项目application.yml文件中配置的端口
$ docker run -ti -d -p 8881:8081 --name ipdrpmg ipdrpmg/micro
# 查看容器启动日志
$ docker logs -f ipdrpmg

这样 springboot 工程镜像化就完成了。

4、maven多模块项目,如果启动过程中报如下错误,解决方法如下:

报错信息:

no main manifest attribute, in app.jar

解决方法 就是修改主入口工程pom文件的plugin

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<!--可以把依赖的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>

然后重新 mvn package docker:build 就不会报错了。

发布于

2020-05-25

更新于

2022-03-25

许可协议

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...