关于Docker化Emacs的疑问, 将一些外部server当成一个单独的container


#1

目前我的工作状态: 因为Emacs是一个docker container, 并不是持久化环境。所以想将很多daemon程序独立成一个单独的container, 例如tern-server, offlineimap notmuch , gnupg agent等

但是几乎全部都不支持,因为软件包会按照系统路径去搜索可执行程序,无法与docker发生调用关系。

所以请问下目前emacs有没有流行的解决方案解决此类问题呢?


#2

以及未来的lsp成熟之后 lsp-javascript, lsp-python 都可以单独成一个容器提供服务,这样配置起来也会容易很多。


#3

这几天尝到了 docker 的甜头,也有类似的想法。对我来说最理想的情况下,有一个主储存 container 可以映射到本地文件系统,然后把 Emacs, TexLive, Anaconda, 以及各种 langauge servers 分别做成容器。系统路径的问题用 alias 链接到 pipeline 上面解决。不太懂这有没有 kubernetes microservices 的意味,也不知道是否可行。


#4

我目前的实践是用一个volume来存放文件,然后每个container去挂载这个volume达到共享文件的目的。而且这样可以让文件内容可持久化。


#5

用 docker compose 可以简化多个 container/services 协同运行的配置脚本

使用起来也很简单,是一种轻量的解决方案


#6

在docker里起emacs 有啥好处。 docker是偏ops的解决方案吧, 感觉在dev环节带不来什么大的好处


#7

现在的问题是如何像调用本地软件一样调用其他容器?@et2010 我也在考虑 docker compose, 但是不知道配置起来是否方便,比如把其他容器的路径加入本容器的环境变量中。

@alexsun 比如在 Windows 上体验 Linux 原生的 emacs.


#8

window上用 docker 没法用桌面版啊, 这样的emacs没xserver。 你是用终端版的吗


#9

我用 vcXsrv GUI 显示没有问题


#10

:+1: 还有这种操作


#11

是的 vcxsrv就能用gui了,而且比emacs for windows还流畅。


#12

当然可以,docker compose 就是用来做这些的,非常方便,配置简单明了


#13

好的,过几天尝试搭建一下全模块化成容器的开发环境,成功了的话回来分享


#14

期待你的分享


#15

这个可以进行下Emacs benchmark。看看Dockerize之后,性能的损耗是否明显。

比如运行ESUP对比Emacs的启动时间。