ubuntu-desktop-lxde-vncというdockerイメージを利用する。

コンテナの起動

以下コマンドでコンテナを起動できる

docker run -itd -p 8080:80 --name javafx kajindowsxp/javafx

正常に終了すれば、ブラウザからhttp://localhost:8080にアクセスすると、デスクトップ画面が表示される。

Dockerfile(参照)

自分でイメージをビルドしたい場合は下記Dockerfileを用いる。

FROM dorowu/ubuntu-desktop-lxde-vnc:focal
WORKDIR /root
RUN apt update
RUN apt install -y git zip at-spi2-core
ADD https://download.java.net/java/GA/jdk17/0d483333a00540d886896bac774ff48b/35/GPL/openjdk-17_linux-x64_bin.tar.gz .
RUN tar xvzf openjdk-17_linux-x64_bin.tar.gz
RUN mv jdk-17/ /usr/local/lib
RUN ln -s /usr/local/lib/jdk-17/bin/javac /usr/local/bin/javac
RUN ln -s /usr/local/lib/jdk-17/bin/java /usr/local/bin/java

ADD https://download2.gluonhq.com/openjfx/17.0.0.1/openjfx-17.0.0.1_linux-x64_bin-sdk.zip .
RUN unzip openjfx-17.0.0.1_linux-x64_bin-sdk.zip
RUN mv javafx-sdk-17.0.0.1/ /usr/local/lib/

RUN rm -r *

RUN echo 'export PATH_TO_FX=/usr/local/lib/javafx-sdk-17.0.0.1/lib' >> /root/.javarc
RUN echo 'alias javac="javac -encoding utf8 --module-path $PATH_TO_FX --add-modules javafx.controls"' >> /root/.javarc
RUN echo 'alias java="java --module-path $PATH_TO_FX --add-modules javafx.controls"' >> /root/.javarc
RUN sed -i '1isource /root/.javarc' /root/.bashrc

コーディング

VSCodeをアタッチするか、gitのリポジトリからクローンするなりお好きな方法でjavaを書く。

実行

一番左下のアイコンから、「System Tools」→「LXTerminal」でターミナルを開く

通常通り、コンパイルと実行を行うとFXのウィンドウを開くことができる