So führen Sie JavaFX unter Docker aus

TL; DR

Installieren Sie VcXsrv und fügen Sie Ihrer Docker-Datei Folgendes hinzu.

Befehl zum Hinzufügen zu Dockerfile


ENV DISPLAY host.docker.internal:0.0
RUN apt-get install openjfx

Einführung

Ich möchte eine JavaFX-Anwendung in einem Docker-Container ausführen!

Ich denke, viele Leute denken so. Ich bin einer von denen.

Zu dieser Zeit hatte ich einige Probleme.

Hier werden wir das obige Problem lösen.

Build wird nicht bestanden, wenn nur das Basis-Image von openjdk

Sie müssen das openjfx-Paket installieren.

Seit Java 9 in Oracle JDK und Open JDK aufgeteilt ist, enthält Open JDK keine JavaFX-Pakete mehr. Ursprünglich sollten das openjdk-Paket und das openjfx-Paket in Sarahs Basis-Image eingeführt werden, aber das von openjdk veröffentlichte Basis-Image enthält nicht das openjfx-Paket.

Die folgende Beschreibung ist in der Docker-Datei erforderlich.

Installieren Sie das openjfx-Paket


RUN apt-get install openjfx

Wenn Sie es ordentlich schreiben möchten, sollten Sie es wie folgt schreiben.

Installieren Sie das openjfx-Paket sauber


RUN apt-get update && \
    apt-get install -y --no-install-recommends \
      openjfx \
    && \
    rm -rf /var/lib/apt/lists/*

OpenJFX can not be used anymore · Issue #323 · docker-library/openjdk https://github.com/docker-library/openjdk/issues/323

rburgst/java8-openjfx-docker: openjdk8 container including openjfx https://github.com/rburgst/java8-openjfx-docker

Ich weiß nicht, wie ich den GUI-Bildschirm im Container aus dem Container herausholen kann

Der Bildschirm im Container wird nur im Container angezeigt. Dies bedeutet, dass es normalerweise unmöglich ist, von außerhalb des Behälters zu sehen.

Aber das ist Docker, es macht nichts. Es gibt eine Methode, um den GUI-Bildschirm innerhalb des Containers außerhalb des Containers auszugeben.

Weitere Informationen finden Sie auf der folgenden Webseite.

Installieren Sie VcXsrv

Installieren Sie VcXsrv.

Diese Software ähnelt einem X-Server-Emulator und kann WSL-GUI-Apps anzeigen.

Zeigen Sie die Linux-GUI unter Win10 mit WSL und VcXsrv an https://www.usagi1975.com/201903021706/

Einstellen der Umgebungsvariablen DISPLAY

Die Umgebungsvariable DISPLAY ist das Ausgabeziel des GUI-Bildschirms, der vom x-Fenstersystem im Container angezeigt wird. Setzen wir dies auf "host.docker.internal: 0.0".

Einstellen der Umgebungsvariablen DISPLAY


ENV DISPLAY host.docker.internal:0.0

Führen Sie die GUI-App in Docker für Windows-Container aus --FILES = 0 https://fileszero.kimurak.net/2019-04-18-docker-and-gui-on-windows/

ANZEIGE - Was wirst du tun? https://sites.google.com/site/teyasn001/ubuntu-12-10/huan-jing-bian-shudisplay

Fliegen Sie vom lokalen zum Remote-X-Server-Qiita https://qiita.com/kkk627/items/8db34266722488eae412


Zusammenfassend ist der Mechanismus wie folgt.

  1. Geben Sie den Bildschirm aus dem Container in "host.docker.internal: 0.0" aus
  2. VcXsrv außerhalb des Containers ist der Empfänger von host.docker.internal: 0.0
  3. VcXsrv gibt einen GUI-Bildschirm auf dem Bildschirm aus

abschließend

Die von mir erstellte JavaFX-App wurde von Gradle erstellt.

Beispiel


FROM gradle:5.5-jdk11

ENV DISPLAY host.docker.internal:0.0

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
      openjfx \
    && \
    rm -rf /var/lib/apt/lists/*

RUN git clone https://github.com/morichan/retuss.git

WORKDIR retuss

RUN gradle build

CMD ["gradle", "run"]

Bitte nehmen Sie Bezug darauf.

docker-images/retuss-docker at master · Morichan/docker-images https://github.com/Morichan/docker-images/tree/master/retuss-docker

Morichan/Retuss: Real-time Ensure Traceability between UML and Source-code System https://github.com/Morichan/Retuss

Recommended Posts

So führen Sie JavaFX unter Docker aus
Wie man javafx mit Raspeye ausführt veröffentlicht am 12.07.2020
Schritte zum Ausführen von Docker auf einem Mac
So führen Sie Blazor (C #) mit Docker aus
So installieren Sie Docker
So führen Sie NullpoMino 7.5.0 unter Ubuntu 20.04.1 64-Bit-Version aus
Führen Sie openvpn unter Docker aus (Windows)
Wie man mit Heroku einsetzt
So legen Sie Nginx von Docker fest
So führen Sie Java EE Tutial auf Github unter Eclipse aus
Führen Sie das SSE-Beispiel (Server-Sent-Event) auf Docker aus
So stellen Sie Laravel für CentOS 7 bereit
So führen Sie JUnit in Eclipse aus
Führen Sie Puppeteer-Core auf Heroku aus (Docker Edition)
Wie man Ant in Gradle ausführt
Verwendung von Ruby on Rails
Führen Sie die AWS CLI in Docker aus
Verwendung von Bio-Formaten unter Ubuntu 20.04
So installieren Sie MariaDB 10.4 unter CentOS 8
Führen Sie PureScript auf einem Docker-Container aus
[JavaFX] [Java8] Verwendung von GridPane
So installieren Sie WildFly unter Ubuntu 18.04
Stellen Sie Rails on Docker für Heroku bereit
So führen Sie React und Rails auf demselben Server aus
So erstellen Sie CloudStack mit Docker
So starten Sie Camunda mit Docker
So überprüfen Sie, ob Java auf einem Mac installiert ist
Ein Memorandum zur Verwendung von Eclipse
So teilen Sie Dateien mit Docker Toolbox
Verwendung von Apache Derby unter Eclipse
So erkennen Sie Mikrofonkonflikte unter Android
So installieren Sie Eclipse (Photon) auf Ihrem Mac
Verwendung von Docker in VSCode DevContainer
So wechseln Sie Java-Versionen auf dem Mac
So installieren Sie Beta PHP8.0 unter CentOS8
[Ruby on Rails] Verwendung von redirect_to
So installieren Sie kafkacat unter Amazon Linux2
Bis Sie Apache mit Ubuntu auf Docker ausführen
Verstehe in 5 Minuten !! Wie man Docker benutzt