Простой Docker-контейнер умирает сразу после запуска Docker. - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть Dockerfile, который выглядит следующим образом:

FROM alpine:3.9

RUN apk add --update openjdk8
RUN mkdir /var/generator/
COPY generator.jar /var/generator
EXPOSE 8080
ENTRYPOINT [ "/bin/sh" ]

Dockerfile находится внутри генератора / папки.Я строю его, используя:

docker build -t generator generator/

Он успешно строится:

Successfully built 878e81f622cc
Successfully tagged generator:latest

, но когда я пытаюсь запустить этот образ с

docker run -d -p 8080:8080 generator

, он сразу же умирает,docker logs не выводит.

Что не так с моим Dockerfile?Почему контейнер умирает?

Ответы [ 2 ]

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

Попробуйте запустить JAR.В настоящее время он просто запускает команду sh и завершает работу.Сделайте что-нибудь, как показано ниже, чтобы запустить JAR на переднем плане -

FROM alpine:3.9

RUN apk add --update openjdk8
RUN mkdir /var/generator/
COPY generator.jar /var/generator
EXPOSE 8080
ENTRYPOINT ["java","-jar","/var/generator/generator.jar"]
0 голосов
/ 28 апреля 2019

Рядом с вашей точкой входа неверно (sh выходит немедленно). Я бы также рекомендовал начать с подходящего базового образа, а не начинать с alpine и устанавливать пакет openjdk. Поскольку вы хотите запустить приложение Java, просто используйте JRE, а не полный JDK, и запустите приложение как процесс переднего плана.

Вот минимальная версия, которая также более эффективна в размере диска, так как образ будет меньше.

FROM openjdk:8-jre-alpine

COPY generator.jar /opt/generator.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/opt/generator.jar"]
...