[编者的话] 当文字偶遇代码,当程序插上了翅膀,让分享成为我们彼此沟通的语言。我们期待可以构建这样一个平台让开发者们看到你们的智慧,挖掘你们的才华,让彼此在开源的路上不再孤独。“DaoCloud分享写作计划”已全面启动,欢迎投稿。
作者:李建赢
本文的价值
- 截止目前,在docker hub上还看不到hexo 3+版本的镜像构建。
- node环境真的是比较恼人,实在是不想来回安装,真的是太痛苦了。
- 基于dockerfile构建自己的HEXO环境非常灵活,可以根据自己的情况进行定制。
- 可以导入导出复制环境部署到其他电脑中。
实践开始
docker安装
大部分Linux,比如说Ubuntu,Debian都可以通过如下命令安装:
curl -sSL https://get.daocloud.io/docker | sh
TIP:别忘了配置好DaoCloud加速,不然构建速度很慢。
构建
docker build -t hexo3 - < hexo3.dockerfile
hexo3.dockerfile
`\
FROM node:slim
MAINTAINER Jianying Li lijianying12@gmail.com
instal basic tool
RUN apt-get update && apt-get install -y git ssh-client ca-certificates –no-install-recommends && rm -r /var/lib/apt/lists/*
set time zone
RUN echo “Asia/Shanghai” > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
install hexo
RUN npm install hexo@3.0.0 -g
set base dir
RUN mkdir /hexo
set home dir
WORKDIR /hexo
EXPOSE 4000
CMD [“/bin/bash”] `\
定制自己的image请注意,现在最简洁的三个包内容为:
- 部署用的git(如果不用git部署请去掉)
- ssh-client(ssh方式的git部署依赖)
- ca-certificates(https方式的git部署)
TIP: 在shell中或者lib中调用https方式通讯的时候如果报错Problem with the SSL CA cert (path? access rights?)
可以通过安装包:ca-certificates来解决问题,yum apt中都是如此。
构建时间大概十几分钟之就可以完成。
准备把实体机(host)上的文件挂载到docker中
- 安装Guest Additions, 因为要使用Shared Floader。
- 使用命令
sudo mount -t vboxsf [sharename] [dist]
来挂载共享目录。
运行
docker run -it -d -p 4000:4000 -v /root/blog:/hexo/ --name hexo hexo3
注意路径 /root/blog/
是我VirtualBox 虚拟机中blog存储的位置。
另外注意我在实战的过程中/root/blog/
使用Shared floader(vboxsf)来进行挂载。因此可以直接操作host上的文件系统。
其他的参数可以很容易的在manual中找到意义。
备份与还原
# docker save hexo3 > /root/hexo3.tar
# docker load < /root/hexo3.tar
注意这里使用save而不是export 因为需要保存历史层
参考导出大小:
du -h /root/hexo3.tar
261M /root/hexo3.tar
从以上所有的工作中,对比虚拟机进行环境的构建打包,docker具有构建环境时间更短,打包文件更小的特点。
使用容器操作blog
docker exec -it hexo /bin/bash
Tip: 虽然做到了用docker构建一个非常方便移植的hexo环境,但是运行命令hexo的时候有点慢,但不是那种忍受不了的慢。
小技巧
在调试的时候可以使用 docker rm $(docker ps -q -a)
一次性删除所有的容器, docker rmi $(docker images -q)
一次性删除所有的镜像。
本文原载于 李建赢 的个人博客, DaoCloud 获得授权后将其转载。
博客原文地址:在OSX下使用docker构建hexo环境
未经允许不得转载:DaoCloud道客博客 » 在OSX下使用Docker构建hexo环境