天天看點

在 OSX 下使用 docker 建構 hexo 環境

2015-05-31 08:55       

摘要: 截止目前為止,在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:s ...

截止目前為止,在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 <[email protected]>

# 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 [email protected] -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/需要使用絕對路徑

其他的參數可以很容易的在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) 一次性删除所有的鏡像。

<b>原文釋出時間為:2015-05-31</b>

<b>本文來自雲栖社群合作夥伴“linux中國”</b>