java.awt.AWTError: Невозможно подключиться к серверу окон X11, используя ': 0' в качестве значения переменной DISPLAY

Я предполагаю, что использование TASKKILL / IM mongod.exe прекрасно подходит для прекращения работы сервера mongodb.

1
задан Soumyaranjan Pani 19 March 2019 в 06:50
поделиться

1 ответ

Вы используете java:8 базовое изображение, которое, скорее всего, не обеспечивает графическое окружение.

Вы можете использовать ubuntu:18.04 базовый образ с установленными вручную пакетами openjdk-11-jdk и xvfb. Команда xvfb-run позаботится о настройке виртуальной среды X-сервера:

xvfb-run устанавливает файл полномочий X (или использует существующий, указанный пользователем), записывает в него куки (см. xauth (1x)) и затем запускает X-сервер Xvfb в качестве фонового процесса. Идентификатор процесса Xvfb сохраняется для последующего использования. Затем указанная команда выполняется с использованием дисплея X, соответствующего только что запущенному серверу Xvfb и ранее созданному файлу полномочий X.

Dockerfile

FROM ubuntu:18.04
RUN apt-get update -y && apt-get upgrade -y && apt-get install -y openjdk-11-jdk xvfb 
ADD JFrameDocker.java MANIFEST.mf ./
RUN javac JFrameDocker.java
RUN jar cfm JFrameDocker.jar MANIFEST.mf JFrameDocker.class 
RUN xvfb-run java -jar JFrameDocker.jar

JFrameDocker.java

import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class JFrameDocker {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        JLabel lable = new JLabel("Hello World");
        panel.setLayout(new FlowLayout());  
        frame.add(panel);
        panel.add(lable);
        frame.setSize(800, 600);
        frame.setVisible(true);
        System.out.println("Up and running");
    }

}

MANIFEST.mf

Manifest-Version: 1.0
Main-Class: JFrameDocker
0
ответ дан Karol Dowbecki 19 March 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: