Простой docker-compose для выполнения Jar - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь настроить очень простой контейнер Docker, который будет выполнять файл Jar.Я хочу изображение, которое запустит простой Jar.Мне больше ничего не нужно.

Пока мой docker-compose.yml выглядит так, но он не запускается правильно:

version: "3.3"

services:
  myapp:
    image: openjdk:8
    container_name: "myapp"
    restart: always
    ports:
      - 8091:8091
    volumes:
      - "./meanwhile-in-hell.jar:/app.jar"
    command: ['java', '-jar', '/app.jar']
STATUS
Restarting (1) 2 seconds ago

Использование command: ['java', '-jar', '/app.jar']вариант, я вижу это в журналах Docker:

Error: Invalid or corrupt jarfile /app.jar

Если я перехожу на использование entrypoint: [ "sh", "-c", "java -jar /app.jar" ], я вижу ту же ошибку.

Файл Jar абсолютно исправен и не поврежден.Я запустил его вручную на другом tomcat:8-alpine контейнере, который у меня запущен, и он успешно запускается.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы можете проверить этот выпуск , вам нужно установить флаг в точке входа и путь в pom.

Для меня, когда у меня возникла проблема, все, что я сделал, былопоместите аргумент JAR_FILE в pom без косой черты "/", и это сработало.

    <resource>
            <targetPath>/</targetPath>
              <directory>${project.build.directory}</directory>
               <include>${project.build.finalName}.jar</include>
    </resource>

и точка входа вместе с Dockerfile будет


FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
...