Micronaut Dockerfile ломает сборку пакетов - PullRequest
0 голосов
/ 22 апреля 2019

Я создал простое приложение Micronaut, используя

mn create-app имя_приложения - build maven

с JDK 11 в случае, если это имеет значение.

Это создает проект maven, который прекрасно компилируется, но включает Dockerfile, например:

FROM adoptopenjdk/openjdk11-openj9:jdk-11.0.1.13-alpine-slim
COPY target/app_name*.jar app_name.jar
EXPOSE 8080
CMD java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dcom.sun.management.jmxremote -noverify ${JAVA_OPTS} -jar app_name.jar

Однако в Maven AFAICT не включена сборка докера.

Так что я включил это

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>${dockerfile-maven-version}</version>
    <executions>
        <execution>
            <id>default</id>
            <goals>
                <goal>build</goal>
                <goal>push</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <repository>dockerUser/app_name</repository>
        <tag>${project.version}</tag>
        <buildArgs>
            <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
</plugin>

, который действительно может создать образ докера, но не без ручного вмешательства. Причина в том, что при mvn package три баночки создаются в target/:

  • app_name-0.1.jar
  • имя_приложения-0,1-shaded.jar * * 1 025
  • оригинал-app_name-0.1.jar

, что приводит к сбою цели докера с

При использовании COPY с более чем одним исходным файлом, адрес назначения должен быть каталогом и заканчиваться на /

Это сообщение имеет смысл, потому что все банки соответствуют шаблону источника COPY в Dockerfile.

Прямо сейчас я просто удаляю два других jar-файла (оригинальный и затененный) и запускаю цель докера самостоятельно, но это нормально, пока я работаю в локальном ручном режиме.

Я что-то упустил или это упущение при создании проекта Micronaut?

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

К сожалению, я не могу помочь вам с настройкой микронавигации.Однако, если целью является копирование основного файла JAR, а суффикс неизвестной версии является причиной использования подстановочного знака при копировании, элемент finalName может быть добавлен в файл pom.xml, чтобы удалить информацию о версии изимя файла JAR:

<build>
    <finalName>app_name</finalName>
</build>
0 голосов
/ 23 апреля 2019

Я что-то упустил или это недосмотр Микронавта создание проекта?

Последний.

Если вы подадите вопрос по номеру https://github.com/micronaut-projects/micronaut-profiles/issues, мы сможем его исправить.

Соответствующие файлы:

Спасибо за ввод.

...