Comment installer Java dans un conteneur en l'écrivant dans Dockerfile?
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
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
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