unraid通过docker使用emacs

我没有在unraid的软件中找到emacs的包,对于unraid而言,emacs还是过于庞大。但我对系统自带的vi和通过插件安装的vim都不满意。 系统自带的vi是个精简版本的。两个vim每次编辑都创建临时文件。更何况,我还需要编辑各类文件。于是,有了通过docker来运行emacs 的想法。

docker构建emacs倒是很简单,但运行之后,发现了unraid引起的坑,与上一次尝试相同,最大的坑是文件读写的效率问题。不过,这次 我有了充分的解决方式。

我的cache主要由三块固态硬盘组成,分别是120G+120G+240G,本来没有240G,通过raid0组合,速度是很快,后来看着240G的固态放在 那里浪费,就加上了,然后为了最大的可用性,就恢复成默认的方式,这样可以充分利用磁盘空间。但这种方式有个问题,就是数据的读写, 每次读写都需要unraid磁盘程序的处理,需要判断是哪个硬盘,然后加载的小文件多的话,速度就爆慢了。以我最终的emacs(spacemacs)为例,如果 我将启动相关的配置,放置在cache上的话,从启动到能使用大约需要130秒左右,启动后啥也不做,仅仅打开home目录,这个目录使用的 也是cache磁盘,大概10秒多才能出来吧。

我还有另外一块机械硬盘在做cache, 主要是为了一些不太重要的文件,比如docker运行的容器,下载的镜像,从网上下载下来的一些电影 或者视频之类的,这块数据对我而言丢了无所谓的,做成cache处理也是为了不将其放入阵列中,使用方便而已。但如果将启动的配置, 放到这个硬盘中的话,启动只需要5秒钟,打开目录也是瞬间打开,效率相差近百倍了,已经几乎比我ubuntu主机上的要快了。

我本来使用的是ubuntu做的emacs,但最后折腾的实在太大,就改成alpine了,最终镜像229MB,相比于windows的压缩包87MB,虽然是 大了,但压缩包解完压缩也差不多150MB了吧,更何况,我在镜像中加入了rime输入法的支持,emoji字体的支持,还有git等常用工具, 已经很令我满意了。

付dockerfile文件及构建运行的docker-compose文件

FROM alpine:edge
ADD install.alpine /install.sh
RUN /install.sh

docker-compose文件, 通过配置DISPLAY来支持gui界面,LANG为了显示中文

version: '2'
services:
  emacs:
    build:
      context: .
      dockerfile: alpine.Dockerfile
    environment:
    - DISPLAY=192.168.199.171:0.0
    - LANG=zh_CN.UTF-8
    working_dir: ${PWD}
    tty: true
    privileged: true
    volumes:
      - ../root:/root
      - .:${PWD}

安装脚本, 这样做是为了减少docker的层级

#!/bin/sh
set -x

op=${1:-all}

function install_app () {
    sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories
    echo 'https://mirrors.aliyun.com/alpine/edge/testing' >> /etc/apk/repositories
    apk add --no-cache bash \
        sudo \
        dbus-x11 \
        git \
        curl \
        emacs-x11 \
        openssh-client \
        librime \
        wget \
        wqy-zenhei \
        gzip \
        fontconfig \
        font-noto-emoji \
        unzip \
        tar
}

function install_source_code() {
    set  -euo pipefail
    I1FS=$'\n\t'
    mkdir -p /tmp/adodefont
    cd /tmp/adodefont
    wget -q --show-progress -O source-code-pro.zip https://github.com/adobe-fonts/source-code-pro/archive/2.030R-ro/1.050R-it.zip
    unzip -q source-code-pro.zip -d source-code-pro
    mkdir -p ~/.fonts
    cp -v source-code-pro/*/OTF/*.otf ~/.fonts/
    fc-cache -f
    rm -rf source-code-pro{,.zip}
}

function clean_all() {
    rm -rf /var/cache/* /tmp/* /var/log/* ~/.cache && mkdir -p /var/cache/apk
}

function all() {
    install_app
    #install_source_code
    clean_all
}

$op

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据