maven - 使用 JIB 插件 Docker 化多模块 Spring Boot 应用程序

标签 maven docker jib

我有一个 Spring boot 应用程序,并使用 spotify 插件来 Dockerize 我的应用程序。因此,我将拥有一个如下所示的 Dockerfile。

FROM jdk1.8:latest  

RUN mkdir -p /opt/servie

COPY target/service.war /opt/service

ENV JAVA_OPTS="" \
    JAVA_ARGS=""

CMD java ${JAVA_OPTS} -jar /opt/service/service.war ${JAVA_ARGS}

我发现了 JIB,它看起来真的很酷。但是,努力让它发挥作用。

我添加了下面的 pom 条目。

<plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>0.9.6</version>
        <configuration>
          <from>
            <image>jdk1.8:latest</image>
          </from>
          <to>
            <image>docker.hub.com/test/service</image>
          </to>
        </configuration>
      </plugin>

mvn compile jib:build

我看到以下内容。

[INFO]构建依赖层... [INFO] 构建类层... [INFO]构建资源层...

当我运行 docker 镜像时,它说,Jar 文件不存在。我有一个多模块 Maven 项目,想在运行 mvncompile jib:build 时从父 pom 中对多个模块进行 dockerize。有什么帮助吗?

最佳答案

确实是的。 JIB不需要 Dockerfile 或 dockerd。

下面分享一个示例,您只需将其复制到 pom.xmlplugins 部分

<plugin>  
    <groupId>com.google.cloud.tools</groupId>  
    <artifactId>jib-maven-plugin</artifactId>  
    <version>0.9.7</version>  
    <configuration>  
    <allowInsecureRegistries>true</allowInsecureRegistries>  
    <from>  
        <image>gcr.io/distroless/java</image>  
    </from>  
    <to>  
    <!-- make sure you already have created a project at Google Cloud Platform, see https://cloud.google.com/container-registry/ -->  
        <image>gcr.io/my-gcp-project/${project.artifactId}:${project.version}</image>  
        <credHelper>gcr</credHelper>  
    </to>  
    <container>  
        <jvmFlags>  
            <jvmFlag>-Xms256m</jvmFlag>  
            <jvmFlag>-Xmx512m</jvmFlag>  
            <jvmFlag>-Xdebug</jvmFlag>  
            <jvmFlag>-XX:+UnlockExperimentalVMOptions</jvmFlag>  
            <jvmFlag>-XX:+UseCGroupMemoryLimitForHeap</jvmFlag>  
        </jvmFlags>  
        <mainClass>learnmake.microservices.RunApplication</mainClass>  
        <ports>  
            <port>8080</port>  
            <!-- <port>4000-4004/udp</port> -->  
        </ports>  
        <format>OCI</format>  
        <!-- OR <format>Docker</format> -->  
        <useCurrentTimestamp>true</useCurrentTimestamp>  
      </container>  
    </configuration>  
</plugin>   

更详细的示例,请参见learnmake-microservices

关于maven - 使用 JIB 插件 Docker 化多模块 Spring Boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51373718/

相关文章:

maven - 我可以在 Groovy 变量名中包含奇数字符吗?

maven - 如何防止 Maven 在依赖项的 pom 文件中使用 <repository>?

Docker-compose 不反射(reflect) requirements.txt 中的更改

java - 运行 dockerizing 镜像时找不到主类

maven - Grails:为什么在编译期间执行 Config.groovy 文件?

maven - 如何使用 Netbeans 7.3.1 + JBoss AS7 部署 WAR

curl - 可以从 curl 访问 docker 服务,但不能从 postman/chrome 访问

docker - 将 docker 镜像克隆到 dockerhub 账户

spring-boot - 如何安装curl来进行spring boot jib docker镜像的健康检查?

spring-boot - 使用JIB插件对Spring Boot应用程序进行Docker化