一、添加maven插件
在pom.xml文件 中添加docker的插件。
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>bestweiwei/demo:1.0</imageName>
<baseImage>openjdk:8</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<serverId>docker-hub</serverId>
</configuration>
</plugin>
</plugins>
imageName:是指定镜像名称,前面bestweiwei是我的dockerhub仓库名,demo是镜像名称,1.0是版本。
baseImage:用于指定基础镜像。
entryPoint:就是Dockerfile文件里的指令一样的意思,也是容器运行之后要执行的命令。
directory:用户指定需要复制的根目录。
include:用于指定需要复制的文件。
然后执行命令 mvn clean package docker:build
等待运行完成,镜像就构建完成了。也可以运行idea的右侧的maven按钮。
二、插件读取Dockerfile文件进行build镜像
首先在项目的根目录创建一个Dockerfile文件,在哪创建都一样,只不过需要指定目录。填入以下内容
FROM openjdk:8
ADD ["demo-0.0.1-SNAPSHOT.jar","demo.jar"]
EXPOSE :8080
ENTRYPOINT ["java","-jar","/demo.jar"]
修改下pom.xml,添加一个<dockerDirectory>${project.basedir}</dockerDirectory>
,删除baseImage
和entryPoint
,因为插件会读取Dockerfile文件的配置,如果Dockerfile不是在根目录,${project.basedir}
后面还需要加上你的Dockerfile文件的路径。
三、推送镜像
首先去maven的配置文件setting.xml中加入一段配置。
<servers>
<server>
<id>my-docker</id>
<username>dockerhub的用户名</username>
<password>dockerhub的登录密码</password>
<configuration>
<email>dockerhub的绑定邮箱</email>
</configuration>
</server>
</servers>
然后在pom.xml文件中修改docker插件的配置,在其中加上<serverId>my-docker</serverId>
如图:
然后执行命令 mvn clean package docker:build -DpushImage
等待push。点击右边的push也行。
The push refers to repository [docker.io/bestweiwei/demo]
162e8397570c: Pushed
2ee490fbc316: Layer already exists
b18043518924: Layer already exists
9a11244a7e74: Layer already exists
5f3a5adb8e97: Layer already exists
73bfa217d66f: Layer already exists
91ecdd7165d3: Layer already exists
e4b20fcc48f4: Layer already exists
1.0: digest: sha256:3c525df2f92da221d7b78d947570942d7d20a4441d007a86fb1f5795779fdb96 size: 2007
已经存在的是我已经push过一次了。这样的就是push成功了,然后打开看一下。
搞定。