Docker Compose OpenJDK - не работает отображение тома - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь выполнить Java Приложение в контейнере, созданном docker compose.

Это compose yaml:

version: "3.7"
services:
  randomnum-generator:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
    - .:/app
    image: randomnum-generator:latest
    container_name: java-randomnum-generator

И это Dockerfile

FROM openjdk:latest
WORKDIR /app/src
RUN javac Main.java
CMD ["java", "Main"]

Фактический путь (.) Содержит папку "sr c", которая содержит Main. java. Когда я пытаюсь выполнить его таким образом, я получаю сообщение об ошибке "файл не найден: Main. java, Использование: javac

Я что-то не так делаю с отображением пути?

Любая помощь приветствуется, спасибо заранее.

1 Ответ

0 голосов
/ 26 марта 2020

В вашей конфигурации есть несколько проблем.

  1. Вы не указываете sourcepath при компиляции.
  2. Вам не нужно использовать тома для ссылки на артефакты исходного кода / сборки.
  3. Вам не нужен JDK для запуска приложения. Нужно только построить его.

Предполагая, что у вас есть следующая файловая структура

src/Main.java
Dockerfile
docker-compose.yml

, вы можете сделать это так:

Dockerfile:

FROM openjdk:11-jdk AS BUILD
COPY src src
RUN javac -sourcepath src src/Main.java

FROM openjdk:11-jre
COPY --from=BUILD /src/Main.class Main.class
CMD ["java", "Main"]

docker-compose.yml:

version: "3.7"
services:
  randomnum-generator:
    build: .

Примечание: если ваша программа состоит из нескольких файлов, вам может потребоваться включить их все или создать jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...