Comment installer Java dans un conteneur en l'écrivant dans Dockerfile?

Sep 19 2020

Je suis naïf dans le développement de logiciels. Je veux exécuter un fichier jar à partir de Dkron Scheduler en utilisant le travail cron. J'exécute dkron dans docker (en utilisant docker-compose up). Je passe "command": "java --version" pour voir si je peux exécuter java depuis Dkron. Comme docker n'a pas installé java, j'ai changé le fichier dockerfile.hub en ceci:

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

Quand je fais à nouveau docker-compose, cela ne donne aucune erreur, toujours en passant "commande": "java --version" par json via l'interface utilisateur, dkron affiche une erreur - exec: "java": fichier exécutable introuvable dans $ PATH .

Que puis-je faire pour le résoudre?

Merci d'avance.

Réponses

1 ShivamSahu Sep 20 2020 at 17:21

J'ai pu créer une JVM dans un conteneur docker en utilisant dkron comme image de base (disponible publiquement) et créer une autre image par-dessus.

Voici dockerfile que j'ai créé pour exécuter l'application 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

Ensuite, je construis une image. Soit id xxx Ensuite, j'ai exécuté l'image et construit le serveur dkron en tant que docker run -p 8080: 8080 agent xxx --server --bootstrap-expect = 1 --node-name = node1

code_mechanic Sep 19 2020 at 05:52

Essayez ce fichier

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

le paquet alpin n'a pas de openjava8paquet.

Edit: Mettre à jour les variables ENV