Pour exécuter JavaFX sur Docker

TL; DR

Installez VcXsrv et ajoutez ce qui suit à votre Dockerfile.

Commande à ajouter à Dockerfile


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

introduction

Je souhaite exécuter une application JavaFX dans un conteneur Docker!

Je pense que beaucoup de gens le pensent. Je suis l'un d'eux.

À ce moment-là, j'ai rencontré des problèmes.

Ici, nous résolvons le problème ci-dessus.

La construction ne passe pas si seule l'image de base d'openjdk

Vous devez installer le package openjfx.

Depuis Java 9 divisé en Oracle JDK et Open JDK, Open JDK n'inclut plus les packages JavaFX. À l'origine, le package openjdk et le package openjfx devraient être introduits dans l'image de base de Sarah, mais l'image de base publiée par openjdk n'inclut pas le package openjfx.

La description suivante est requise dans le Dockerfile.

Installez le package openjfx


RUN apt-get install openjfx

Si vous voulez l'écrire proprement, vous devez l'écrire comme suit.

Installez proprement le package openjfx


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

Je ne sais pas comment faire sortir l'écran GUI à l'intérieur du conteneur du conteneur

L'écran à l'intérieur du conteneur s'affiche uniquement à l'intérieur du conteneur. Cela signifie qu'il est généralement impossible de voir de l'extérieur du conteneur.

Mais c'est Docker, ça ne fait rien. Il existe une méthode pour afficher l'écran GUI à l'intérieur du conteneur vers l'extérieur du conteneur.

Pour plus de détails, reportez-vous à la page Web suivante.

Installez VcXsrv

Installez VcXsrv.

Ce logiciel est comme un émulateur X-Server et peut afficher des applications GUI WSL.

Afficher l'interface graphique Linux sur Win10 avec WSL et VcXsrv https://www.usagi1975.com/201903021706/

Définition de la variable d'environnement DISPLAY

La variable d'environnement DISPLAY est la destination de sortie de l'écran GUI affiché par le système x window à l'intérieur du conteneur. Définissons ceci sur host.docker.internal: 0.0.

Définition de la variable d'environnement DISPLAY


ENV DISPLAY host.docker.internal:0.0

Exécutez l'application GUI dans Docker pour le conteneur Windows --FILES = 0 https://fileszero.kimurak.net/2019-04-18-docker-and-gui-on-windows/

AFFICHAGE-Que vas-tu faire? https://sites.google.com/site/teyasn001/ubuntu-12-10/huan-jing-bian-shudisplay

Déplacer les fenêtres du serveur X local vers le serveur distant Qiita https://qiita.com/kkk627/items/8db34266722488eae412


En résumé, le mécanisme est le suivant.

  1. Sortez l'écran du conteneur vers host.docker.internal: 0.0
  2. VcXsrv en dehors du conteneur est le destinataire de host.docker.internal: 0.0
  3. VcXsrv affiche un écran GUI à l'écran

en conclusion

L'application JavaFX que j'ai créée est faite par Gradle, donc ce sera comme suit.

Exemple


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"]

Veuillez vous y référer.

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

Pour exécuter JavaFX sur Docker
Comment exécuter javafx avec Raspeye publié le 12/07/2020
Étapes pour exécuter Docker sur Mac
Comment exécuter Blazor (C #) avec Docker
Comment installer Docker
Comment exécuter NullpoMino 7.5.0 sur la version 64 bits d'Ubuntu 20.04.1
Exécutez openvpn sur Docker (Windows)
Comment déployer avec heroku
Comment définir nginx de Docker
Comment exécuter Java EE Tutial sur github sur Eclipse
Exécutez l'exemple SSE (Server-Sent-Event) sur le docker
Comment déployer Laravel sur CentOS 7
Comment exécuter JUnit dans Eclipse
Exécutez puppeteer-core sur Heroku (édition Docker)
Comment exécuter Ant dans Gradle
Comment utiliser Ruby on Rails
Exécutez l'AWS CLI sur Docker
Comment utiliser les bio-formats sur Ubuntu 20.04
Comment installer MariaDB 10.4 sur CentOS 8
Exécuter PureScript sur un conteneur Docker
[JavaFX] [Java8] Comment utiliser GridPane
Comment installer WildFly sur Ubuntu 18.04
Déployer des rails sur Docker vers heroku
Comment exécuter React et Rails sur le même serveur
Comment créer CloudStack à l'aide de Docker
Comment démarrer Camunda avec Docker
Comment vérifier Java installé sur Mac
Un mémorandum sur l'utilisation d'Eclipse
Comment partager des fichiers avec Docker Toolbox
Comment utiliser Apache Derby sur Eclipse
Comment détecter les conflits de microphone sur Android
Comment installer Eclipse (Photon) sur votre Mac
Comment utiliser Docker dans VSCode DevContainer
Comment changer de version de Java sur Mac
Comment installer la beta php8.0 sur CentOS8
[Ruby on Rails] Comment utiliser redirect_to
Comment installer kafkacat sur Amazon Linux2
Jusqu'à ce que vous exécutiez apache avec ubuntu sur docker
Comprendre en 5 minutes !! Comment utiliser Docker