在OSX下使用docker构建hexo环境

运维 系统运维 MacOS
由于Node环境的安装时间比较长,对于电脑比较多的人相对来说还是比较麻烦的。基于DockerFile构建自己的HEXO环境非常灵活,可以根据自己的情况进行定制。

[[135438]]

  1. 截止目前为止,在docker hub上还看不到hexo 3+版本的镜像构建。
  2. 由于Node环境的安装时间比较长,对于电脑比较多的人相对来说还是比较麻烦的。
  3. 基于DockerFile构建自己的HEXO环境非常灵活,可以根据自己的情况进行定制。
  4. 可以导入导出复制环境部署到其他电脑中。

 

实践开始

 

docker安装

大部分Linux,比如说Ubuntu,Debian都可以通过如下命令安装:

  1. curl -sSL https://get.daocloud.io/docker | sh 

TIP:别忘了配置好DaoCloud加速,不然构建速度很慢。

 

构建

  1. docker build -t hexo3 - < hexo3.dockerfile

hexo3.dockerfile 如下:

  1. FROM node:slim
  2.  
  3. MAINTAINER Jianying Li <lijianying12@gmail.com>
  4.  
  5. # instal basic tool
  6. RUN apt-get update && apt-get install -y git ssh-client ca-certificates --no-install-recommends && rm -r /var/lib/apt/lists/*
  7. # set time zone
  8. RUN echo "Asia/Shanghai" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
  9. # install hexo
  10. RUN npm install hexo@3.0.0 -g
  11. # set base dir
  12. RUN mkdir /hexo
  13. # set home dir
  14. WORKDIR /hexo
  15.  
  16. EXPOSE 4000
  17.  
  18. CMD ["/bin/bash"]

定制自己的image请注意,现在最简洁的三个包内容为:

  1. git,部署的时候用(如果不用git部署请去掉)。
  2. ssh-client(ssh方式的git部署依赖)。
  3. ca-certificates(https方式的git部署依赖)。

TIP: 在shell中或者lib中调用https方式通讯的时候如果报错

  1. Problem with the SSL CA cert (path? access rights?)

可以通过安装包:ca-certificates 来解决问题,yum apt中都是如此。

构建时间大概十几分钟完成。

 

准备把实体机(host)上的文件挂载到docker中

  1. 安装Guest Additions, 因为要使用Shared Floader。
  2. 使用命令 sudo mount -t vboxsf [sharename] [dist]来挂载共享目录。

 

运行

  1. docker run -it -d -p 4000:4000 -v /root/blog:/hexo/ --name hexo hexo3

注意路径 /root/blog/ 是我VirtualBox 虚拟机中blog存储的位置。

注意参数/root/blog/需要使用绝对路径

其他的参数可以很容易的在manual中找到意义。

 

备份与还原

  1. #docker save hexo3 > /root/hexo3.tar
  2. #docker load < /root/hexo3.tar

注意这里使用save而不是export 因为需要保存历史层

参考导出大小:

  1. du -h /root/hexo3.tar
  2. 261M /root/hexo3.tar

从以上所有的工作中,对比虚拟机进行环境的构建打包,docker具有构建环境时间更短,打包文件更小的特点。

 

使用容器操作blog

  1. docker exec -it hexo /bin/bash

Tip: 虽然做到了用docker构建一个非常方便移植的hexo环境,但是运行命令hexo的时候有点慢,但不是那种忍受不了的慢。

 

小技巧

在调试的时候可以使用 docker rm $(docker ps -q -a) 一次性删除所有的容器,docker rmi $(docker images -q) 一次性删除所有的镜像。

责任编辑:林师授 来源: philo.top
相关推荐

2011-03-28 10:42:00

Spring

2010-09-15 09:00:21

MeeGo TouchQT SDKMeeGo

2017-02-28 10:11:14

Mac OSXPython开发环境

2009-01-03 14:39:04

ibmdwDojoMVC

2010-04-19 15:11:25

Unix操作系统

2024-02-23 10:11:00

虚拟化技术

2014-08-11 10:15:01

Docker开发环境

2009-11-06 10:05:18

Linux系统环境GFS

2009-12-10 09:42:07

2011-09-01 19:06:57

UbuntuLua安装环境

2021-03-04 20:46:32

virtualenvwPython虚拟环境

2009-07-09 15:31:23

构建Python开发环

2023-02-23 09:36:34

DockerELK堆栈

2015-01-22 09:06:31

Docker云计算云应用

2013-01-24 09:29:16

2011-01-14 11:27:02

Linux制作网页

2009-07-26 20:22:03

SuSE 10.2JDK下载JDK环境

2024-08-19 08:00:00

2023-09-14 09:31:21

Docker容器

2017-03-24 09:24:21

HarborDocker镜像仓库
点赞
收藏

51CTO技术栈公众号