dockerizing ошибка приложения Spring Boot: ошибка: недопустимый или поврежденный файл jarfile /app.jar

Я начинаю работать с докером и пытаюсь докеризовать свое загрузочное приложение Spring. Я создал это с помощью spring initializr. Я работаю с maven. Мой DockerFile выглядит так:

FROM java:8-jdk-alpine

COPY ${JAR_FILE} app.jar

WORKDIR /usr/app

EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

Все очень просто.

Я выполнил следующие команды:

docker build -t shortenurl .

Я вижу изображение в консоли с изображениями докеров:

введите здесь описание изображения

Но когда я пытаюсь запустить изображение с помощью команды: docker run -p 8080:8080 shortenurl, я получаю следующее сообщение об ошибке: Ошибка: недопустимый или поврежденный файл jarfile /app.jar

Я пробовал разные конфигурации, но не совсем уверен. Любой совет?

Спасибо.

Это мой раздел плагинов pom.xml:

       <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.2.3</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>

Это мой журнал после команды: docker build -t corretenurl.

$ docker build -t shortenurl .
Sending build context to Docker daemon  32.89MB
Step 1/5 : FROM java:8-jdk-alpine
 ---> 3fd9dd82815c
Step 2/5 : COPY ${JAR_FILE} app.jar
 ---> 248aa4be697d
Step 3/5 : WORKDIR /usr/app
 ---> Running in 5fcd71c548af
Removing intermediate container 5fcd71c548af
 ---> bc344b970b11
Step 4/5 : EXPOSE 8080
 ---> Running in 46b4e4f8e9b7
Removing intermediate container 46b4e4f8e9b7
 ---> 6b4f55a86a23
Step 5/5 : ENTRYPOINT ["java","-jar","/app.jar"]
 ---> Running in 838a6052f4c8
Removing intermediate container 838a6052f4c8
 ---> 7d7d272ea42d
Successfully built 7d7d272ea42d
Successfully tagged shortenurl:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

person rasilvap    schedule 02.11.2019    source источник
comment
Что вы сделали, чтобы отладить это? Например, если в образе отображается оболочка отладки, действительно ли файл app.jar находится в корневом каталоге образа?   -  person David Maze    schedule 02.11.2019
comment
ваш app.jar может быть не исполняемым. Вы можете показать свой pom.xml, а конкретно spring-boot-maven-plugin?   -  person Hasan Can Saral    schedule 02.11.2019
comment
@HasanCanSaral Я отредактировал свой вопрос в разделе плагинов.   -  person rasilvap    schedule 02.11.2019


Ответы (1)


Вы строите с spring-boot-maven-plugin, но не создаете исполняемый файл jar. Обновите конфигурацию вашего плагина, чтобы:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

и все должно быть в порядке.

person Hasan Can Saral    schedule 02.11.2019
comment
У меня такая же проблема, я обновил вопрос в журнале после команды: docker build -t shorttenurl. Спасибо! - person rasilvap; 02.11.2019
comment
Извините, я ошибочно принял эту проблему за другую. Я предполагаю, что ваша COPY операция идет не очень хорошо. Какая польза от docker-maven-plugin, если вы строите с самим docker? - person Hasan Can Saral; 03.11.2019
comment
@rasilvap Можете попробовать FROM java:8-jdk-alpine COPY target/app**.jar /usr/app/app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","/usr/app/app.jar"] и убедиться, что ваш jar-файл действительно скопирован. - person Hasan Can Saral; 03.11.2019