2017-09-13 1 views
0

Ich bin ein Anfänger in der Verwendung von Docker. Ich benutze Docker Toolbox für Windows 7, ich habe ein Bild für meine Python Web App erstellt und alles funktioniert gut.JAVA_HOME für Docker in NLTK für Stanford NLP setzen

Allerdings verwende ich für diese App Nltk-Modul, die auch Java und Java-Ausgangseinstellung für die Java-Datei benötigt. Wenn ich auf meinem Computer laufe, kann ich das java_home manuell einstellen, aber wie mache ich das in der Docker-Datei, damit es keinen Fehler bekommt, wenn es auf einem anderen Rechner läuft. Hier ist mein Fehler:

My Error

P. S: Antwort unter

+0

Schnelle Frage: Brauchen Sie wirklich Docker NLTK zu tun? – alvas

+0

Ich denke ja, weil ich die App auf meinem Firmenserver bereitstellen muss, die die Methode des Ziehens des Bildes von dockerhub verwenden wird –

+0

Interessant ... Wenn Sie möchten, erklären Sie bitte die Anforderungen und die ideale Situation, wenn NLTK enthielt Docker Bilder zu diesem Thema: https://github.com/nltk/nltk/issues/542 – alvas

Antwort

2

Wenn Sie einen Container haben Sie die Möglichkeit laufen in Umgebungsvariablen zugeben, die mit der -e Flagge in Ihrem Container gesetzt werden. Diese Antwort erklärt Umgebungsvariablen schön: How do I pass environment variables to Docker containers?

docker container run -e JAVA_HOME='/path/to/java' <your image>

Stellen Sie sicher, Ihr Bild Java tatsächlich enthält auch. Vielleicht möchten Sie etwas wie das Bild openjdk:8 auf dem Andock-Hub ansehen.

Es klingt wie Sie brauchen eine Docker-Datei, um Ihr Bild zu bauen. Haben Sie einen Blick auf die ENV Befehl hier dokumentiert die JAVA_HOME var zu setzen: https://docs.docker.com/engine/reference/builder/#env und dann Bild bauen mit docker build /path/to/Dockerfile

Ich sehe Sie schon, dass versucht haben und nicht viel Glück hatte .. laufen die Behälter und statt Führen Sie Ihren Anwendungsprozess aus und führen Sie einfach ein Bash-Skript in den Zeilen echo $JAVA_HOME aus, damit Sie zumindest überprüfen können, ob das Teil funktioniert.

Stellen Sie außerdem sicher, dass Sie die erforderlichen Dateien/Binärdateien in die entsprechenden Verzeichnisse im Bild in der Docker-Datei kopieren (siehe unten).

+0

Er könnte sogar nur ein "Bootstrap" -Skript in seinem Docker-Build enthalten, der seine Python-App aufruft und die Umgebungsvariable –

+0

auch festlegt Problem ist, ich denke, dass ich den Behälter nicht laufen lasse. Ich schiebe es einfach auf dockerhub und verwende eine andere App, um das Docker-Image zurück zu ziehen und es auf dem Firmenserver zu implementieren. Daher kann ich nur das Bild ändern, bevor ich es erstelle, also suche ich nach einer Möglichkeit, java_home für die Bilder –

+0

@NickBrady sogar mit der Variable automatisch zu setzen, ohne die tatsächlichen Binaries und die Stanford-NLP-Verzeichnisse auf Docker, den Code zu montieren kann auf keine dieser Ressourcen zugreifen. – alvas

0

Ich habe endlich den Weg gefunden, das Java für Dockerfile zu installieren, es ist die Java-Installationsbefehlszeile von Ubuntu Image. Unten ist die Docker-Datei. Danke für deine Lektüre.

RUN apt-get update 
RUN apt-get install -y python-software-properties 
RUN apt-get install -y software-properties-common 
RUN add-apt-repository -y ppa:openjdk-r/ppa 

RUN apt-get update 
RUN apt-get install -y openjdk-8-jdk 

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/ 
RUN export JAVA_HOME 
Verwandte Themen