Como instalar o java no container ao escrevê-lo no Dockerfile?

Sep 19 2020

Sou ingênuo em desenvolvimento de software. Eu quero executar um arquivo jar do Dkron Scheduler usando cron job. Estou executando o dkron no docker (usando docker-compose up). Estou passando "command": "java --version" para ver se consigo executar o java do Dkron. Como o docker não tem java instalado, alterei o arquivo dockerfile.hub para este:

FROM alpine
LABEL maintainer="Victor Castell <[email protected]>"

RUN set -x \
    && buildDeps='bash ca-certificates openssl tzdata' \ 
    && apk add --update $buildDeps \ && apk add openjava8 #add this line to install java && rm -rf /var/cache/apk/* \ && mkdir -p /opt/local/dkron ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk #add this line to install java ENV PATH $PATH:$JAVA_HOME/bin                           #add this line to install java

EXPOSE 8080 8946

ENV SHELL /bin/bash
WORKDIR /opt/local/dkron

COPY dkron .
COPY dkron-* ./
ENTRYPOINT ["/opt/local/dkron/dkron"]

CMD ["--help"]

Quando eu faço docker-compose novamente, ele não dá nenhum erro, ainda ao passar "command": "java --version" por json através da IU, dkron mostra erro - exec: "java": arquivo executável não encontrado em $ PATH .

O que posso fazer para resolver isso?

Desde já, obrigado.

Respostas

1 ShivamSahu Sep 20 2020 at 17:21

Consegui criar JVM no docker container usando dkron como imagem base (disponível publicamente) e construir outra imagem em cima dele.

Aqui está dockerfile que criei para executar o aplicativo Java

FROM dkron/dkron
WORKDIR /root/hello-world
COPY hello.java /root/hello-world

RUN apk add openjdk8

ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
ENV PATH $JAVA_HOME/bin:$PATH

RUN javac hello.java

Então eu construo a imagem. Let id ser xxx Então eu executei a imagem e construí o servidor dkron como docker run -p 8080: 8080 xxx agent --server --bootstrap-expect = 1 --node-name = node1

code_mechanic Sep 19 2020 at 05:52

Tente este arquivo

FROM alpine
LABEL maintainer="Victor Castell <[email protected]>"

RUN set -x \
        && buildDeps='bash ca-certificates openssl tzdata' \
        && apk add --update $buildDeps \ && apk add openjdk8 \ && rm -rf /var/cache/apk/* \ && mkdir -p /opt/local/dkron ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk ENV PATH="$JAVA_HOME/bin:${PATH}"

EXPOSE 8080 8946

ENV SHELL /bin/bash
WORKDIR /opt/local/dkron

COPY dkron .
COPY dkron-* ./
ENTRYPOINT ["/opt/local/dkron/dkron"]

CMD ["--help"]

pacote alpino não tem openjava8pacotes.

Editar: Atualizar variáveis ​​ENV