échec de l'installation de Docker Java7
Question
J'essaie d'installer Java7 via ppa (RUN add-apt-repository ppa:webupd8team/java -y) dans mon image Docker mais cela échoue avec cette erreur :
returned a non-zero code: 127
Les méthodes suivantes sont suggérées pour une installation correcte, mais cela ne fonctionne pas.J'ai également essayé les deux papas.
RUN apt-get install python-software-properties -y
RUN add-apt-repository ppa:webupd8team/java -y
#RUN add-apt-repository ppa:eugenesan/java -y
RUN apt-get update
RUN apt-get install oracle-java7-installer -y
Voici la sortie du journal :
Step 28 : RUN add-apt-repository ppa:webupd8team/java -y
---> Running in b278761a4209
[91m/bin/sh: 1: add-apt-repository: not found
[0m
Alors... j'ai besoin de savoir où/si cette commande existe dans une bibliothèque d'assistance ou quoi :
add-apt-repository
add-apt-repository semble faire partie de l'installation de python-software-properties.Je ne vois aucune erreur réelle à cette étape, à l'exception de ces messages qui apparaissent dans d'autres zones de la construction.Donc je supposer que si je peux résoudre ce problème, l'étape python susmentionnée s'installera si nécessaire :
[91mdebconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
[0m[91mdebconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
[0m[91mdpkg-preconfigure: unable to re-open stdin:
Donc.Comment définir un terme ou un dialogue ?Je pensais que le -y autorisait ça
La solution
Le -y
dans ton apt-get install
les commandes sont révélatrices apt-get
pour "supposer oui", ce qui n'est pas la même chose que de fonctionner en mode non interactif.
Vous voyez le message « Impossible d'initialiser l'interface :Messages de dialogue "car Debian est en cours d'exécution apt-get
en mode interactif.Pour lui dire de s'exécuter en mode non interactif, ajoutez cette ligne au début de votre Dockerfile :
ENV DEBIAN_FRONTEND noninteractive
Vos commandes s'exécuteront désormais en mode non interactif, donc apt-get
n'essaiera pas d'afficher des boîtes de dialogue.
Quant à votre erreur réelle, vous avez raison, add-apt-respository
fait partie du python-software-properties
.Essayez de mettre votre apt-get update -y
commande au-dessus de votre apt-get install python-software-properties
commande.
RUN apt-get update -y && \
apt-get install python-software-properties -y && \
add-apt-repository ppa:webupd8team/java -y && \
apt-get update -y && \
apt-get install oracle-java7-installer -y && \
oracle-java7-set-default
Attention, vous devrez en faire deux apt-get update -y
commandes, une avant de commencer (toujours une bonne habitude à prendre) et une après avoir ajouté le PPA Oracle Java.
Autres conseils
add-apt-repository
La commande fait partie du package software-properties-common.Installez software-properties-common, pas python-software-properties.
Ensuite, vous pouvez ajouter le référentiel ppa:webupd8team.Mais il y a toujours un problème.
Définissez le accept-oracle-license-v1-1 et installez Java.L'exemple de Dockerfile ci-dessous fonctionnera parfaitement.
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install software-properties-common -y
RUN add-apt-repository ppa:webupd8team/java -y
RUN apt-get update
RUN echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
RUN apt-get install oracle-java7-installer -y
J'ai essayé quelques choses différentes à rien, alors je suis allé avec OpenJDK à la place.Cela m'a passé devant cette étape et à l'erreur suivante: -).
# method 2
RUN apt-get install openjdk-7-jre -y