You need to be able to run a Java 6 Swing GUI in a container.
To get the GUI environment working might be tricky e.g. on MacOS see
Please try out the following Dockerfile and Gui.java first using the build and run scripts.
FROM java:6
MAINTAINER Wolfgang Fahl (https://www.bitplan.com)
LABEL Description="Java GUI"
COPY src /home/root/java/src
WORKDIR /home/root/java
RUN mkdir bin
RUN javac -d bin src/Gui.java
WORKDIR /home/root/java/
ENTRYPOINT ["java", "-cp","bin","Gui"]
import javax.swing.*;
import java.awt.event.*;
/**
*
*/
public class Gui {
public static class MyAction implements ActionListener {
public void actionPerformed(ActionEvent ae){
JOptionPane.showMessageDialog(null, "Thanks.", "GUI Test", 1);
}
}
public static void main(String args[]){
JFrame frame = new JFrame("GUI Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,300);
JButton button1 = new JButton("Click me");
frame.getContentPane().add(button1);
button1.addActionListener(new MyAction());
frame.setVisible(true);
}
}
#!/bin/bash
# WF 2019-04-03
docker build . -t bitplan/javagui:latest
This run script tries to make the X11 environment of your host computer available to your docker container. The approach is slightly different on Linux and MacOS. This has not been tested on Windows due to the need of an X11 environment. According to https://blogs.msdn.microsoft.com/jamiedalton/2018/05/17/windows-10-docker-gui/ you might have some success with Xming in this environment. Please let me know whether this works via http://www.bitplan.com/index.php/Contact.
#!/bin/bash
# WF 2019-04-03
echo "DISPLAY=$DISPLAY"
# use socat for port 6000
port6000() {
echo "checking port 6000"
lsof -i TCP:6000
if [ $? -ne 0 ]
then
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"&
fi
}
docker stop javagui
docker rm javagui
os=$(uname -a)
case $os in
Linux*)
dockerdisplay=$DISPLAY
n="--net=host"
v="-v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/root/.Xauthority:rw";;
Darwin*)
port6000
dockerdisplay=docker.for.mac.host.internal:0
v=""
n="";;
esac
docker run --name javagui -e DISPLAY=$dockerdisplay $n $v bitplan/javagui:latest
#docker exec -it javagui /bin/bash