Emacs в контейнере Docker не может подключиться к MELPA - PullRequest
0 голосов
/ 16 октября 2019

В настоящее время я сталкиваюсь с проблемой невозможности Emacs подключиться к MELPA. Исследуя эту проблему, я обнаружил, что эта проблема обсуждается во многих темах. Однако каждое предложенное мной решение не сработало, кроме того, способ, которым я настроил свой экземпляр Emacs, заставляет меня думать, что корень проблемы может быть где-то в другом месте (не связанный с emacs).

Итак, позвольте мне объяснить мои настройки: у меня есть хост Windows 10, и я пытаюсь запустить графический интерфейс Emacs для Linux на этом хосте. Я пробовал различные методы (виртуальные машины, Emacs для Windows, ...). В настоящее время я пытаюсь запустить Emacs внутри контейнера Docker с пересылкой X11 с XMing на моем хосте.

Версия Docker на хосте: Docker version 19.03.2, build 6a30dfc Я использую этот контейнер докера в качествебаза. Однако я немного изменил Dockerfile в соответствии со своими потребностями (я должен отметить, что никогда раньше не работал с докером):

FROM alpine:edge
MAINTAINER Daniel Guerra <daniel.guerra69@gmail.com>

ARG authorizedKeys=authorized_keys

RUN apk add --update openssh util-linux dbus ttf-freefont xauth xf86-input-keyboard emacs-x11 bash git sudo\
&& rm  -rf /tmp/* /var/cache/apk/*

RUN addgroup alpine \
&& adduser  -G alpine -s /bin/bash -D alpine \
&& echo "alpine:alpine" | /usr/sbin/chpasswd \
&& echo "alpine    ALL=(ALL) ALL" >> /etc/sudoers

RUN cp -r /etc/ssh /ssh_orig
RUN rm -rf /etc/ssh/*

ADD etc /etc
ADD docker-entrypoint.sh /usr/local/bin

VOLUME ["/etc/ssh"]

RUN mkdir -p /home/alpine/.ssh
ADD $authorizedKeys /home/alpine/.ssh/authorized_keys

RUN mkdir -p /home/alpine/.config
RUN git clone https://github.com/minikN/dotemacs.git /home/alpine/.config/emacs/

RUN mkdir -p /home/alpine/.emacs.d
RUN ln -s /home/alpine/.config/emacs/init.el /home/alpine/.emacs.d/init.el
RUN ln -s /home/alpine/.config/emacs/config.el /home/alpine/.emacs.d/config.el
RUN ln -s /home/alpine/.config/emacs/config.org /home/alpine/.emacs.d/config.org

RUN chown -R alpine:alpine /home/alpine/.emacs.d

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["/usr/sbin/sshd","-D"]

Я в основном копирую свои хосты authorized_keys в контейнер. Я делаю это потому, что использую Putty и его ssh-agent для подключения к машине через SSH.

После этого я просто копирую свою конфигурацию emacs из моего GitHub в контейнер. Вы можете найти конфигурацию emacs здесь .

Если я сейчас начну подключать контейнер к нему через SSH и запустить emacs, он откроется в XMing. Однако он просто зависает (фактически весь контейнер зависает), я просто вижу белый экран. После перезапуска контейнера и запуска emacs --daemon я вижу, что он зависает на

alpine-sshdx:~$ emacs --daemon
Contacting host: melpa.org:443

Кстати, я проверил несколько зеркал. melpa.org:443 это просто последняя попытка. Также пробовал оба HTTP / HTTPS.

Однако выполнение ping 8.8.8.8 работает просто отлично.

Я абсолютно не знаю, в чем причина этого. Но я верю, что в контейнере что-то есть.

Буду признателен за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...