0.前提条件:
项目能运行
会使用maven打包成jar包
Docker Desktop 开启Expose daemon on tcp://localhost:2375 without TLS。开启了远程访问,不然生成镜像时会提示报错Connection timed out: no further information。个人遇到的问题是这样解决的。反复试验确实如此,但不知道原因。docker客户端的setting下图打勾表示开启:
添加插件依赖
在pom.xml文件中需要在 <build> 标签下添加 Docker 插件的依赖项:
<!--使用docker-maven-plugin插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<!--指定生成的镜像名-->
<imageName>docker-demo</imageName>
<!-- 指定 Dockerfile 路径 , 根据实际情况改动! ${project.basedir}:项目根路径-->
<dockerDirectory>src/docker</dockerDirectory>
<resources>
<resource>
<!--target包所在路径,jar包所在路径,jar包名-->
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
Dockerfile文件编写。
根据上述配置文件里的内容,指定 Dockerfile 的路径,需要在src/docker路径下创建Dockerfile名字的文件,并添加如下内容:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myapp.jar"]
生成jar包
使用maven的package打成jar包。
点击clean,清理掉之前打的包和target文件。(一般来说无所谓)
点击package,进行打包。
打包成功后生成如下target文件:
生成docker镜像
命令行形式:略
图形化界面形式:
点击插件下的docker:build,就会打包成镜像文件
执行结果如下:
在终端查看是否有生成的镜像:docker images