【发布时间】:2021-12-10 09:15:33
【问题描述】:
我有以下 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 应用程序很棘手。您可以直接在主机上运行应用程序吗?如果您使用的是原生 Linux 主机,Can you run GUI applications in a Linux Docker container? 会描述一长串所需的绑定挂载和环境变量。
标签: java docker docker-compose