代码之家  ›  专栏  ›  技术社区  ›  user1578872

使用JIB插件对接spring boot应用程序

  •  0
  • user1578872  · 技术社区  · 7 年前

    我正在使用maven jib插件对基于Spring boot的应用程序进行dockerize。

    https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin

    <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-resources-plugin</artifactId>
                            <executions>
                                <execution>
                                    <phase>generate-sources</phase>
                                    <goals>
                                        <goal>copy-resources</goal>
                                    </goals>
                                    <configuration>
                                        <resources>
                                            <resource>
                                                <directory>src/main/resources/static</directory>
                                            </resource>
                                        </resources>
                                        <outputDirectory>${project.build.directory}/webapp/static</outputDirectory>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <groupId>com.google.cloud.tools</groupId>
                            <artifactId>jib-maven-plugin</artifactId>
                            <version>0.9.13</version>
                            <executions>
                                <execution>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>build</goal>
                                    </goals>
                                </execution>
                            </executions>
                            <configuration>
                                <from>
                                    <image>${base.image}</image>
                                </from>
                                <to>
                                    <image>${registry}/${repository}/${image}:${version}</image>
                                </to>
                                <extraDirectory>${project.build.directory}/webapp</extraDirectory>
                            </configuration>
                        </plugin>
    

    我在JIB插件中没有参数或入口点。我想通过辩论来控制它。

    在运行“mvn clean install”时,我在日志中看到了下面的一行。

    Container entrypoint set to [java, -cp, /app/resources:/app/classes:/app/libs/*, com.test.Application]
    

    我试着通过——春天。配置。位置作为程序参数,如下所示。但它不是在挑选我的申请。财产。我试图修改起始类名以检查它是否工作,但它仍然需要com。测验应用看起来,这里没有考虑-c。

    docker run-v /local/path/config/:/secrets/ 图片:1.0 bash“java-cp/app/libs/*:/app/resources/:/app/classes/-Xmx2g-Xms2g 通用域名格式。测验应用 --春天。配置。位置=/secrets/application。yml“

    0 回复  |  直到 7 年前
        1
  •  0
  •   charlycou    6 年前

    由于您正在使用Jib构建容器映像,因此默认入口点是

    ENTRYPOINT ["java", jib.container.jvmFlags, "-cp", "/app/resources:/app/classes:/app/libs/*", jib.container.mainClass]
    

    此外,jib使用只包含运行时依赖项的无分发映像。所以你不能跑 bash 在你的容器里。

    这应该能行。

    docker run -e "spring.config.location=/secrets/application.yml" -v /local/path/config/:/secrets/ IMAGE:1.0
    
        2
  •  0
  •   Sandeep Jain    5 年前

    当使用jib作为maven插件时,理解这个问题

    然后将入口点传递到容器中,但jib插件似乎没有接收到。

    因此,需要对位置的参数访问进行以下更改:

               <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>jib-maven-plugin</artifactId>
                <version>2.2.0</version>
                <configuration>
                    <to>
                        <image>image-url</image>
                    </to>
    
                    <container>
                        <creationTime>${maven.build.timestamp}</creationTime>
                        <mainClass>com.package.SpringBootMainClass</mainClass>
                        <args>
                            <arg>--spring.config.location=/demo/location/application.yml</arg>
                        </args>
                    </container>
    
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    
    推荐文章