Come installare java nel container mentre lo si scrive in Dockerfile?

Sep 19 2020

Sono ingenuo nello sviluppo del software. Voglio eseguire un file jar da Dkron Scheduler utilizzando cron job. Sto eseguendo dkron in finestra mobile (utilizzando docker-compose up). Sto passando "comando": "java --version" per vedere se posso eseguire java da Dkron. Poiché docker non ha java installato, ho cambiato il file dockerfile.hub in questo:

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 eseguo di nuovo la composizione docker non dà alcun errore, continuando a passare "comando": "java --version" da json attraverso l'interfaccia utente, dkron mostra l'errore - exec: "java": file eseguibile non trovato in $ PATH .

Cosa posso fare per risolverlo?

Grazie in anticipo.

Risposte

1 ShivamSahu Sep 20 2020 at 17:21

Sono stato in grado di creare JVM nel contenitore docker utilizzando dkron come immagine di base (disponibile pubblicamente) e creare un'altra immagine sopra di essa.

Ecco il dockerfile che ho creato per l'esecuzione dell'applicazione 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

Poi costruisco l'immagine. Let id be xxx Quindi ho eseguito l'immagine e ho creato il server dkron come docker run -p 8080: 8080 xxx agent --server --bootstrap-wait = 1 --node-name = node1

code_mechanic Sep 19 2020 at 05:52

Prova questo file

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"]

Il pacchetto alpino non ha openjava8pacchetti.

Modifica: aggiorna le variabili ENV