- Вопрос или проблема
- Ответ или решение
- Пошаговая инструкция по созданию нативного бинарника с использованием Docker образа GraalVM
- Шаг 1: Подготовка окружения
- Шаг 2: Клонирование репозитория и сборка проекта
- Шаг 3: Создание контейнера с отладкой
- Шаг 4: Сборка нативного образа
- Шаг 5: Проверка результата
- Заключение
Вопрос или проблема
Я использую WSL 2, Ubuntu 20.10 LTS (только терминал, без GUI), командная строка Docker.
Я следую https://www.graalvm.org/latest/reference-manual/native-image/guides/build-java-modules-into-native-executable/
git clone https://github.com/graalvm/graalvm-demos
cd graalvm-demos/native-hello-module
mvn package
java --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule
native-image --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule // Я не могу продолжить отсюда.
У меня есть эти вещи в порядке
# GraalVM JDK с Native Image
docker pull container-registry.oracle.com/graalvm/native-image:23
# GraalVM JDK без Native Image
docker pull container-registry.oracle.com/graalvm/jdk:23
..../temp_2024_11_08/graalvm-demos/native-hello-module# docker -v
Docker version 27.3.1, build ce12230
..../temp_2024_11_08/graalvm-demos/native-hello-module# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
container-registry.oracle.com/graalvm/jdk 23 147c8d17a611 4 недели назад 695MB
container-registry.oracle.com/graalvm/native-image 23 5aa4390ae7b9 4 недели назад 1.2GB
hello-world latest d2c94e258dcb 18 месяцев назад 13.3kB
..../temp_2024_11_08/graalvm-demos/native-hello-module#
Как собрать нативный бинарник с помощью моего существующего образа Docker graalvm?
Ответ или решение
Для создания нативного бинарного файла с использованием образа GraalVM в Docker, следуя описанным шагам и указанной в вашем вопросе инструкции, вам потребуется выполнить несколько необходимых действий. Ваша текущая среда разработки на WSL 2 с Ubuntu 20.10 LTS и использование командной строки Docker дают вам все нужные инструменты для начала этого процесса. Давайте разберемся с пошаговой инструкцией.
Пошаговая инструкция по созданию нативного бинарника с использованием Docker образа GraalVM
Шаг 1: Подготовка окружения
Убедитесь, что вы правильно настроили вашу среду. У вас уже есть Docker и необходимые образы GraalVM, как вы упомянули в вашем вопросе. Обязательно проверьте, что вы используете последний стабильный образ с Native Image:
docker pull container-registry.oracle.com/graalvm/native-image:23
Шаг 2: Клонирование репозитория и сборка проекта
Вы уже клонировали репозиторий graalvm-demos
и перешли в папку native-hello-module
. Теперь вам нужно собрать проект. Для этого используйте Maven:
cd graalvm-demos/native-hello-module
mvn package
Это создаст файл JAR в папке target
.
Шаг 3: Создание контейнера с отладкой
Теперь необходимо запустить Docker-контейнер на базе образа GraalVM. Это позволит вам использовать все необходимые инструменты для создания нативного бинарника:
docker run -it --rm -v "$PWD":/app -w /app container-registry.oracle.com/graalvm/native-image:23 bash
В этом случае мы подключаем вашу текущую директорию к контейнеру, что делает файлы проекта доступными внутри него.
Шаг 4: Сборка нативного образа
Находясь в контейнере, выполните следующие команды, чтобы создать нативный образ:
# Установите все зависимости
mvn package
# Создайте нативное приложение с помощью native-image
native-image --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule
Обратите внимание, что --module-path
указывает на путь к вашему JAR файлу, а --module
— на имя вашего модуля.
Шаг 5: Проверка результата
После успешной сборки, у вас должен появиться исполняемый файл. Для его проверки выполните:
./HelloModule
Если все шаги были выполнены правильно, ваш нативный бинарный файл должен успешно выполниться.
Заключение
Теперь вы знаете, как создать нативный бинарник для вашего Java модуля с использованием образа GraalVM в Docker. Этот процесс включает в себя подготовку рабочей среды, клонирование необходимого репозитория, компиляцию с Maven и, наконец, создание нативного образа с помощью команды native-image
. Используйте эту инструкцию для работы с GraalVM и наслаждайтесь преимуществами создания эффективных нативных приложений на Java.
Если у вас возникли дополнительные вопросы или сложности в процессе, не стесняйтесь задавать их, и я помогу вам!