Dockerizing spring boot application, использующий плагин JIB

Я использую плагин maven jib, чтобы докернизировать мое приложение, основанное на загрузке Spring.

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>

У меня нет аргументов или Entrypoint в плагине JIB. Я хотел бы контролировать это через аргумент.

Во время работы "mvn clean install" я вижу строку в журналах ниже.

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

Я попытался передать --spring.config.location в качестве аргументов программы, как показано ниже. Но это не комплектация моего приложения. Свойства. Я попытался изменить имя начального класса, чтобы проверить, работает ли он, но он все еще принимает com.test.Application. Похоже, здесь не учитывается -c.

Окно запуска -v /local/path/config/:/secrets/ IMAGE:1.0 bash "java -cp /app/libs/*:/app/resources/:/app/classes/ -Xmx2g -Xms2g com.test.Application --spring.config.location=/ секреты /application.yml"

2 ответа

Понимает проблему при использовании jib в качестве плагина maven.

затем entryPoint будет передан внутри контейнера, но, похоже, плагин 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>

Поскольку вы используете 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
Другие вопросы по тегам