官网
配置pom.xml
配置镜像仓库Harbor私服地址
<properties>
<java.version>1.8</java.version>
<!--docker私服地址-->
<docker.repostory>192.16.128.14:9080</docker.repostory>
</properties>
配置dockerfile-maven-plugin
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.10</version>
<!-- executions 配置执行package时构建image,deploy时push;可注释 -->
<executions>
<execution>
<id>harbor</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 指定docker镜像的repo名字-->
<repository>${docker.repostory}/library/${project.artifactId}</repository>
<!--指定docker镜像的tag-->
<tag>${project.version}</tag>
<!--表示访问远程构件库的认证信息在settings.xml中配置-->
<!--<useMavenSettingsForAuth>true</useMavenSettingsForAuth>-->
<username>admin</username>
<password>password</password>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
编写dockerfile
FROM java:8
EXPOSE 8001
VOLUME /tmp
ARG JAR_FILE
ADD target/${JAR_FILE} /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
配置docker环境
使用该插件构建Docker镜像,需要有一个安装好的Docker运行环境
默认情况下,插件将尝试连接到 localhost:2375 上的 docker。设置 DOCKER_HOST 环境变量以连接其他地方。
配置DOCKER_HOST环境变量,值为:tcp://localhost:2375
2375是为Docker开启的远程访问API的端口( 2375 和 2376端口,分别对应不加密验证和加密验证)
开启2375
vim /usr/lib/systemd/system/docker.service
# add -H tcp://0.0.0.0:2375 --graph /data/docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 --graph /data/docker
#保存退出
#重启
[root@logs2 ~]# systemctl daemon-reload
[root@logs2 ~]# systemctl restart docker
linux
# localhost为具体的docker实例ip
export DOCKER_HOST=tcp://localhost:2375
windows
构建docker镜像
# 单独执行构建命令
mvn dockerfile:build
# 验证 在localhost 所在的服务执行
[root@logs3 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
172.16.128.14:9080/library/springboot-spotify-dockerfile-maven 0.0.1-SNAPSHOT 467bf13ff69d 21 seconds ago 678MB
推送dockers镜像
# 构建成功后执行推送命令
mvn dockerfile:push
错误1
http: server gave HTTP response to HTTPS client
解决1
# add insecure-registries
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.16.128.15:9080"]
}
重启
systemctl daemon-reload
systemctl restart docker