概述
使用spotify的dockerfile maven插件,可以帮助我们将maven与docker进行集成,更快速的在maven构建过程中进行docker镜像的打包操作。
配置仍然是基于Dockerfile的,插件只是辅助。
请注意,插件的名称是 spotify 的 dockerfile-maven-plugin ,而非 docker-maven-plugin 。
详情可访问 github页面
准备工作
首先准备一个spring-boot工程,假设工程名为playground。另外本机需要安装docker,过程都不再赘述。
本文平台为macOS12,docker在不同平台下可能有所差异。
由于dockerhub访问较慢,可以用$$先自行搭建一个socks5代理来加速访问。代理不是必须的。
export ALL_PROXY=socks5://xx.xx.xx.xx:xx
建立Dockerfile
在工程目录下新建一个Dockerfile,基于openjdk的镜像:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/playground-1.1.0.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
使用docker命令构建镜像
在使用Maven插件之前,可以试着先用docker命令来进行打包:
docker build -t="yourname/playground:latest" .
查看镜像是否生成:
docker images
然后可以使用docker push
推送镜像:
docker push yourname/playground
编辑pom.xml
测试通过后,就可以在pom.xml中添加spotify插件了
<properties>
<docker.image.prefix>yourname</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.4</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
</configuration>
</plugin>
</plugins>
</build>
另外还可以添加一个execution,在maven的install生命周期自动进行build和push。
<executions>
<execution>
<id>default</id>
<phase>install</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
使用插件构建镜像
mvn install dockerfile:build
使用插件推送镜像
在使用dockerfile-maven-plugin推送前,需要先编辑一下~/.docker/config.json
,添加用户名及密码,否则会报认证失败。
{
"auths": {
"https://index.docker.io/v1/": {
"Username": "xxxxxx",
"Secret": "xxxxxx"
}
},
"credsStore": "osxkeychain"
}
然后直接运行即可:
mvn dockerfile:push
运行镜像
最后,可以使用docker run
命令可以将镜像启动,在浏览器中查看一下运行情况
docker run -p 8080:8080 -t yourname/playground
使用docker logs
简单查看日志
docker ps
docker logs f4d7e737f47f