Создайте и запустите изображение Docker для приложения Java с пакетамиJAVA

Программисты JAVA общаются здесь
Anonymous
Создайте и запустите изображение Docker для приложения Java с пакетами

Сообщение Anonymous »

Мне удалось настроить и запустить изображение Docker для простого приложения Hello World Java Console, но я борюсь с ним, когда добавляю пакеты.
У меня это работает: < /p>
Содержимое папки: < /p>
Dockerfile HelloWorld.class HelloWorld.java
< /code>
dockerfile: < /p>
FROM openjdk:11-jdk-slim
WORKDIR /app
COPY HelloWorld.java .
RUN javac HelloWorld.java
CMD ["java", "HelloWorld"]
< /code>
java class: < /p>
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Docker World!");
}
}
< /code>
Это прекрасно работает с < /p>
sudo docker build -t hello-world-java .

sudo docker run hello-world-java
< /code>
Но если я добавлю пакет для класса в содержимое папки и класс: < /p>
java class: < /p>
package hello;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Docker World!");
}
}
< /code>
Содержание < /p>
~/workspace/helloWorldPackage$ tree
.
├── Dockerfile
└── hello
├── HelloWorld.class
└── HelloWorld.java

2 directories, 3 files
< /code>
и изменить dockerfile like: < /p>
FROM openjdk:11-jdk-slim
WORKDIR /app
COPY hello/ .
RUN javac HelloWorld.java
CMD ["java", "hello.HelloWorld"]
< /code>
Я могу Docker построить его, но при запуске я получаю: < /p>
Error: Could not find or load main class hello.HelloWorld
Caused by: java.lang.ClassNotFoundException: hello.HelloWorld
exit status 1
< /code>
Я пробовал несколько модификаций в Dockerfile, но безрезультатно. В основном модифицируя трассу в классе на CMD или то, что она скопирована в Copy/Workdir, но я думаю, что не понимаю, что делают такие команды. CMD работает из папки в Workdir? Как это взаимодействует с папкой копирования? А с командой Java? Я думаю, что мне не хватает того, чтобы заставить его работать. Похоже на то, что я получаю для приложения Java без вакансии. Т.е. Правильное описание Dockerfile для Java, чтобы поймать правильную обход класса.

Подробнее здесь: https://stackoverflow.com/questions/794 ... h-packages

Вернуться в «JAVA»