在 docker 个容器上托管 JavaFX 项目

Hosting JavaFX project on docker container

我在 docker 容器上托管我的 JavaFX GUI 应用程序时遇到问题。我的 JavaFX GUI 应用程序位于单个可执行 jar 文件中:start.jar 这是我的 docker 文件:

FROM openjdk:11-jre-slim

RUN mkdir logs

RUN apt-get update && apt-get install libgtk-3-0 libglu1-mesa xvfb -y && apt-get update

RUN apt-get install xvfb

COPY library/javafx-sdk-11.0.2 javafx-sdk-11.0.2 

COPY start.jar start.jar

ENV DISPLAY=:99

COPY run.sh /run.sh

RUN chmod a+x /run.sh

CMD /run.sh

run.sh

#!/bin/bash
rm /tmp/.X99-lock #needed when docker container is restarted
Xvfb :99 -screen 0 640x480x8 -nolisten tcp &
java --module-path javafx-sdk-11.0.2 -jar start.jar

当我 运行 我的 start.jar 应用程序时,我收到此错误:

ES2 Prism: Error - GLX extension is not supported
    GLX version 1.3 or higher is required

我如何更新到正确的 GLX 版本,以便我可以在 docker 上成功 运行 我的 JavaFX GUI 应用程序?

您可以通过为 Prism 设置软件管道来尝试 禁用硬件图形加速 依赖项。这可以通过设置 param -Dprism.order=sw.

来完成

所以run.sh里面的java命令应该改成:

#!/bin/bash
rm /tmp/.X99-lock #needed when docker container is restarted
Xvfb :99 -screen 0 640x480x8 -nolisten tcp &
java -Dprism.order=sw --module-path javafx-sdk-11.0.2-jar start.jar