Как запустить приложение Java Swing с помощью Docker, потому что команда запуска docker выдает безголовое исключение

Когда я пытаюсь запустить изображение качания java, получаю "Ошибка безголового исключения"

ДокерФайл:

ИЗ openjdk:8

COPY

КОПИРОВАТЬ myjar.jar myjar.jar CMD ["java", "-Djava.awt.headless=true", "-jar", "myjar.jar"]

Вам нужен сервер X11, работающий на хосте и подключенный к экземпляру докера.

Thorbjørn Ravn Andersen 21.12.2020 04:36

Спасибо, я установил vcxsrv на свой компьютер и использовал docker run -it --rm -e DISPLAY=${ipaddress} imagname /bin/bash

Hari Raj 22.12.2020 14:46
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Управление транзакциями JDBC - это мощная функция, которая позволяет рассматривать группу операций с базой данных как единую единицу работы. Оно...
Выполнение HTTP-запроса с помощью Spring WebClient: GET
Выполнение HTTP-запроса с помощью Spring WebClient: GET
WebClient - это реактивный веб-клиент, представленный в Spring 5. Это реактивное, неблокирующее решение, работающее по протоколу HTTP/1.1.
Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
2
2
790
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Контейнер должен взаимодействовать с клавиатурой мыши и отображать ваш хост-компьютер для выполнения графического интерфейса. Установил сервер X11 на хост-компьютер, а затем связал контейнер с сервером x11 моего хост-компьютера.

  1. Установил vcxsrv-64.1.20.8.1.installer
  2. Запустил Xlaunch
  3. docker run -it --rm -e DISPLAY=${ipaddress hostmachine} image/bin/bash

Обратите внимание, что безопасность X11 является запоздалой мыслью, и если вы можете это сделать, скорее всего, вы ее отключили. Будьте абсолютно уверены, что vcxsrv не прослушивает порт, открытый для других (настройте ваш брандмауэр и/или vcxsrv), иначе кто-то может указать на вашу машину и сделать неприятные вещи.

Thorbjørn Ravn Andersen 23.12.2020 14:58

Другие вопросы по теме