环境说明

  • Harbor 部署在192.168.2.105

步骤说明

  1. 引入 dockerfile-maven-plugin

    <plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.13</version>
    <executions>
    <execution>
    <id>default</id>
    <goals>
    <!--如果package时不想用docker打包,就注释掉这个goal
    <goal>build</goal>
    <goal>push</goal>-->
    </goals>
    </execution>
    </executions>
    <configuration>
    <!-- 上下文路径配置,此处设置为项目根路径 用来读取Dockerfile-->
    <contextDirectory>${project.basedir}</contextDirectory>
    <!--使用Maven的setting.xml来配置账号密码-->
    <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
    <!--上传路径/镜像构建名: Harbor地址/Harbor项目名/springboot项目名-->
    <repository>${docker.registry}/${docker.image.prefix}/${project.artifactId}</repository>
    <!-- 标签,最终会显示在Harbor镜像的标签中 -->
    <tag>${project.version}</tag>
    <!-- 作为Dockerfile 文件传入,也就是Dockerfile 中 ARG JAR_FILE的值-->
    <buildArgs>
    <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
    </buildArgs>
    </configuration>
    </plugin>
  2. 修改setting.xml

    <!-- harbor -->
    <server>
    <id>192.168.2.205</id>
    <username>axin</username>
    <password>Aa123456</password>
    </server>
  3. 问题解决

.\pipe\docker_engine


Get “https://192.168.2.205/v2/“: x509: cannot validate certificate for 192.168.2.205 because it doesn’t contain any IP SANs

解决:

vim /etc/docker/daemon.json

加上 "insecure-registries": ["harbor ip 地址"],

最终如下

{
"insecure-registries": ["192.168.2.205"],
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}

参考文献

SpringBoot构建Docker镜像并推送到Harbor