【问题标题】:docker-compose up - No X11 DISPLAY variable was set, but this program performed an operation which requires itdocker-compose up - 没有设置 X11 DISPLAY 变量,但是这个程序执行了一个需要它的操作
【发布时间】: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


【解决方案1】:

您需要使用支持 GUI (X11) 的基础镜像构建您的镜像,例如 this one

【讨论】:

  • 我尝试在 Dockerfile 中添加 FROM jlesage/baseimage-gui:alpine-3.6 RUN add-pkg xterm 但仍然是同样的异常
  • RUN add-pkg xterm 是一个例子,你并不需要它。您可以将 Dockerfile 发布到您的问题中吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多