操作系统采用 Alpine 3.6.2-extent x86_64,docker 直接通过 apk 包管理器安装。

其他镜像创建的容器几乎都可以正常运行,唯独与 nodejs 相关的容器无法正常启动,进入容器执行 npm 相关命令会得到 Segmentation fault 错误。

错误原因是 nodejs:alpine 镜像没有预装 paxctl 包,眼前的解决办法是在 ghost 镜像的基础上构建一个新的镜像。

构建新的 ghost 镜像

Dockerfile 内容如下

FROM ghost:alpine
RUN apk add --no-cache paxctl && paxctl -cm `which node`

在 Dockerfile 所在目录执行构建命令

sudo docker build -t getnas/ghost .

使用新的 ghost 镜像创建容器

创建数据卷容器

sudo docker run --name ghost_data \
    -v ghost_data:/var/lib/ghost/content \
    ghost:alpine /bin/nice

创建 ghost 并运行容器

sudo docker run -d --name ghost \
    -p 2368:2368 \
    --volumes-from ghost_data \
    -e NODE_ENV=production \
    -e url=http://home.local:2368 \
    --restart always \
    getnas/ghost

环境变量中的 url 必须以协议开头 httphttps,且必须为有效的地址。