how to make the client cgoban3 work in a container

Viewed 29

I play go on kgs. The client is never updated. For security reasons I wanted to put it in a container. On my ubuntu host pc I can launch the client without any problem. The java version used is :

$ java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)

He goes like this: $ java -jar cgoban.jar https://www.gokgs.com/help/downloads.html The client, raw jar file, can be downloaded here : http://www.gokgs.com/download.jsp

As the container shuts down after startup I modified my dockerfile to look for problems, now it looks like this:

# Alpine Linux with OpenJDK JRE
FROM openjdk:8-jre-alpine
RUN apk add --no-cache bash
RUN mkdir /app
COPY cgoban.jar /app 
VOLUME [/tmp,/app]

docker build -t cgoban:latest .

docker run -ti -p 5667:5667 --name gob9 cgoban:latest

It works well.

Inside my container the java version is :

/app # java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (IcedTea 3.12.0) (Alpine 8.212.04-r0)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

I get the following error : /app # java -jar cgoban.jar

Exception in thread "main" java.lang.ExceptionInInitializerError
    at org.igoweb.cgoban.CGoban.<init>(CGoban.java:157)
    at org.igoweb.cgoban.CGoban.main(CGoban.java:62)
Caused by: java.lang.NullPointerException
    at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
    at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
    at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
    at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
    at sun.font.SunFontManager$2.run(SunFontManager.java:431)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.font.SunFontManager.<init>(SunFontManager.java:376)
    at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
    at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
    at java.awt.Font.getFont2D(Font.java:491)
    at java.awt.Font.access$000(Font.java:224)
    at java.awt.Font$FontAccessImpl.getFont2D(Font.java:228)
    at sun.font.FontUtilities.getFont2D(FontUtilities.java:180)
    at sun.font.StandardGlyphVector.initFontData(StandardGlyphVector.java:1126)
    at sun.font.StandardGlyphVector.init(StandardGlyphVector.java:1115)
    at sun.font.StandardGlyphVector.<init>(StandardGlyphVector.java:172)
    at java.awt.Font.getStringBounds(Font.java:2421)
    at java.awt.Font.getStringBounds(Font.java:2331)
    at com.gokgs.client.swing.KgsPlaf.createDefaultValues(KgsPlaf.java:111)
    at com.gokgs.client.swing.KgsPlaf.<clinit>(KgsPlaf.java:61)
    ... 2 more

I don't see what I can do to make the customer work. Has anyone already done this containerisation or do you have any leads?

Thank you in advance for your help,

0 Answers
Related