在 OSX 下使用 docker 构建 hexo 环境
2015-05-31 08:55
671 查看
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/bd41769ae38e91f4709a0a25360eca88.png)
截止目前为止,在docker hub上还看不到hexo 3+版本的镜像构建。
由于Node环境的安装时间比较长,对于电脑比较多的人相对来说还是比较麻烦的。
基于DockerFile构建自己的HEXO环境非常灵活,可以根据自己的情况进行定制。
可以导入导出复制环境部署到其他电脑中。
实践开始
docker安装
大部分Linux,比如说Ubuntu,Debian都可以通过如下命令安装:[code]curl -sSL https://get.daocloud.io/docker | sh[/code]
TIP:别忘了配置好DaoCloud加速,不然构建速度很慢。
构建
[code]docker build -t hexo3 - < hexo3.dockerfile[/code]
hexo3.dockerfile 如下:
[code]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"][/code]
定制自己的image请注意,现在最简洁的三个包内容为:
git,部署的时候用(如果不用git部署请去掉)。
ssh-client(ssh方式的git部署依赖)。
ca-certificates(https方式的git部署依赖)。
TIP: 在shell中或者lib中调用https方式通讯的时候如果报错
[code]Problem with the SSL CA cert (path? access rights?)[/code]
可以通过安装包:ca-certificates 来解决问题,yum apt中都是如此。
构建时间大概十几分钟完成。
准备把实体机(host)上的文件挂载到docker中
安装Guest Additions, 因为要使用Shared Floader。使用命令
sudo mount -t vboxsf [sharename] [dist]来挂载共享目录。
运行
[code]docker run -it -d -p 4000:4000 -v /root/blog:/hexo/ --name hexo hexo3[/code]
注意路径
/root/blog/是我VirtualBox 虚拟机中blog存储的位置。
注意参数
/root/blog/需要使用绝对路径
其他的参数可以很容易的在manual中找到意义。
备份与还原
[code]#docker save hexo3 > /root/hexo3.tar #docker load < /root/hexo3.tar[/code]
注意这里使用save而不是export 因为需要保存历史层
参考导出大小:
[code]du -h /root/hexo3.tar 261M /root/hexo3.tar[/code]
从以上所有的工作中,对比虚拟机进行环境的构建打包,docker具有构建环境时间更短,打包文件更小的特点。
使用容器操作blog
[code]docker exec -it hexo /bin/bash[/code]
Tip: 虽然做到了用docker构建一个非常方便移植的hexo环境,但是运行命令hexo的时候有点慢,但不是那种忍受不了的慢。
小技巧
在调试的时候可以使用 docker rm $(docker ps -q -a) 一次性删除所有的容器,docker rmi $(docker images -q) 一次性删除所有的镜像。相关文章推荐
- 阿里云搭建docker的历程
- 分布式进阶(十二)Docker固定Container IP
- 分布式进阶(十二)Docker固定Container IP
- 分布式进阶(十一) Docker 常见错误汇总
- 分布式进阶(十一) Docker 常见错误汇总
- 在 docker 環境下建立以 MongoDB & NodeJS 為架構的 web server (for Win7)
- 在 docker 環境下建立以 MongoDB & NodeJS 為架構的 web server (for Win7)
- 渗透测试系统 Kali 推出 Docker 镜像
- docker开发环境镜像
- 使用VS把ASP.NET 5的应用发布到Linux的Docker上
- Docker 存储池扩容
- 在 docker 之间导出导入镜像
- docker中两个容器间的互访
- 利用docker部署mysql数据库
- Ubuntu 14.04(64位)安装和使用docker
- 浅谈 Docker 隔离性和安全性
- Docker
- Docker Hub 中超过 30% 的官方镜像包含高危漏洞
- Docker
- 浅谈Docker隔离性和安全性