Come installare java nel container mentre lo si scrive in Dockerfile?
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
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
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