com.google.cloud.tools:jib-maven-plugin:1.4.0:dockerBuild 插件离线执行失败

Failure during offline execution of com.google.cloud.tools:jib-maven-plugin:1.4.0:dockerBuild plugin

当无法访问在线 docker 注册表以强制仅使用本地资源时,我应该如何设置此 maven 插件?

[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:1.4.0:dockerBuild (default-cli) on project mental: registry-1.docker.io: Temporary failure in name resolution: Unknown host registry-1.docker.io: Temporary failure in name resolution -> [Help 1]

插件配置为:

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <configuration>
        <from>
            <image>adoptopenjdk:11-jre-hotspot</image>
        </from>
        <to>
            <image>mental:latest</image>
        </to>
        <container>
            <entrypoint>
                <shell>sh</shell>
                <option>-c</option>
                <arg>chmod +x /entrypoint.sh &amp;&amp; sync &amp;&amp; /entrypoint.sh</arg>
            </entrypoint>
            <ports>
                <port>8080</port>
            </ports>
            <environment>
                <SPRING_OUTPUT_ANSI_ENABLED>ALWAYS</SPRING_OUTPUT_ANSI_ENABLED>
                <JHIPSTER_SLEEP>0</JHIPSTER_SLEEP>
            </environment>
            <useCurrentTimestamp>true</useCurrentTimestamp>
        </container>
    </configuration>
</plugin>

更新。 将 jib 插件升级到 1.61 后。并在图像名称前添加 docker://,离线构建工作正常,但我在输出中收到以下错误:

[INFO] --- jib-maven-plugin:1.6.1:dockerBuild (default-cli) @ mental ---
[WARNING] <container><useCurrentTimestamp> is deprecated; use <container><creationTime> with the value USE_CURRENT_TIMESTAMP instead
[WARNING] Setting image creation time to current time; your image may not be reproducible.
[INFO] 
[INFO] Containerizing application to Docker daemon as mental...
[INFO] 
[INFO] Container entrypoint set to [sh, -c, chmod +x /entrypoint.sh && sync && /entrypoint.sh]
[INFO] 
[INFO] Built image to Docker daemon as mental
[INFO] Executing tasks:
[INFO] [==============================] 100.0% complete
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  09:30 min
[INFO] Finished at: 2019-09-28T19:02:35+03:00
[INFO] ------------------------------------------------------------------------
Exception in thread "Thread-5" Exception in thread "Thread-6" java.lang.NoClassDefFoundError: com/google/common/io/RecursiveDeleteOption
    at com.google.cloud.tools.jib.filesystem.FileOperations.lambda$deleteRecursiveOnExit(FileOperations.java:102)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.google.common.io.RecursiveDeleteOption
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    ... 2 more
java.lang.NoClassDefFoundError: com/google/common/io/RecursiveDeleteOption
    at com.google.cloud.tools.jib.filesystem.FileOperations.lambda$deleteRecursiveOnExit(FileOperations.java:102)
    at java.lang.Thread.run(Thread.java:748)

查看配置会有帮助,但您可以通过 <configuration> 指示 jib 使用本地 docker 守护进程作为图像的来源,方法是在图像名称前加上 docker://,如下所示(顺便说一句,需要插件版本 1.6.0+):

<configuration>
  <from>
    <image>docker://openjdk:alpine</image>
  </from>
  <!-- ... -->
</configuration>

HTH