docker compose-up-没有设置X11 DISPLAY变量,但这个程序执行了一个需要它的操作



我有以下Dockerfile:

FROM adoptopenjdk/openjdk11
COPY target/VanatoareaDeDiamante.jar VanatoareaDeDiamante.jar
ENTRYPOINT ["java", "-jar", "/VanatoareaDeDiamante.jar"]

和docker-compose.yml:

services:
game:
image: 'game'
build:
context: .
ports:
- 5000:5000
container_name: game
depends_on:
- postgresdb
postgresdb:
image: postgres:14
container_name: database
restart: always
command:
-p 5433
environment:
POSTGRES_DB: piu_project
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- 5433:5433

它是一个java GUI应用程序,我想在容器上运行它。当我写下这篇文章时,我得到了:

game          | Exception in thread "Thread-0" java.awt.HeadlessException:
game          | No X11 DISPLAY variable was set, but this program performed an operation which requires it.
game          |         at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:208)
game          |         at java.desktop/java.awt.Window.<init>(Window.java:548)
game          |         at java.desktop/java.awt.Frame.<init>(Frame.java:423)
game          |         at java.desktop/javax.swing.JFrame.<init>(JFrame.java:224)
game          |         at PIUGame.GameWindow.GameWindow.BuildGameWindow(GameWindow.java:34)
game          |         at PIUGame.Game.InitGame(Game.java:47)
game          |         at PIUGame.Game.run(Game.java:83)
game          |         at java.base/java.lang.Thread.run(Thread.java:829)

一些想法?

您需要使用一个支持GUI(X11(的基本映像来构建映像,如下图所示。

最新更新