2017-09-27 4 views
0

Ich versuche, eine kleine Python-Anwendung zu docken. Der Python-Code verwendet die PyQt4-Bibliothek. Die App hat einige Testeinheiten, die ich beim Erstellen des Bildes verwende. Etwas wie folgt aus:Docker-Image mit Python-Anwendung mit PyQt4-Bibliothek erstellen

RUN [ "/bin/bash", "-c", "source activate conda_environment && python -m unittest tests/tests_html_consistency.py" ] 

Die PyQt4 Bibliothek in der Python-Code, um einen X-Server muss seine Dinge zu tun, aber Docker keinen haben, deshalb leider, wenn ich das Bild baue ich die folgende Fehlermeldung erhalten:

Auf anderen ähnlichen Stapelfragen fand ich, dass eine mögliche Lösung wäre, einfach den Socket für den X-Server als Docker-Volume einzuhängen und Docker zu sagen, dass er stattdessen diesen verwendet.

docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY TheImage 

Aber wie mache ich das zur Bildaufbauzeit? Der obige Befehl funktioniert nur, wenn das Image bereits erstellt wurde, und zwar zur Zeit des "Docker Run". Wenn der Host-Rechner eine aws-Instanz ist (also ohne x-Server), würde das funktionieren? Ich glaube nicht ...

Antwort

0

Versuchen Sie, den --build-arg Befehl so:

docker build -t yourContainer --build-arg DISPLAY=$DISPLAY .

+0

Nö, es did't Arbeit. Derselbe Fehler. Aber danke für den Vorschlag, es macht Sinn. – DarioB