Github 地址: https://github.com/iyannik0215/docker-hexo
DockerHub 地址: https://hub.docker.com/r/iyannik0215/docker-hexo/
换了电脑后想要继续写博客, 就必须去装 hexo 的 nodejs + git, 但是毕竟不是玩 nodejs 的人, 每次装都会出点错误什么的, 最牛逼的一次是直接 rm -rf /usr/local/bin 里的所有东西删没了, 于是就想到了 docker 去做个镜像来完成 hexo 的 server 预览 和 deploy 部署 github 的任务.
作为一个程序狗, 电脑里可以没有 nodejs, 但是不能没有 Docker, →_→#.
如果使用了 docker-hexo 那么你电脑里就再也不需要安装你不需要的 nodejs 了, 只需要保存 hexo 一下三样东西, 就可以实现 各种平台的无缝迁移~~.
docker pull iyannik0215/docker-hexo
docker run -p 80:80 -d iyannik0215/docker-hexo {你的 github username} {你的 github email} server
eg: docker run -p 80:80 -d iyannik0215/docker-hexo iyannik0215 [email protected] server
docker run -p 4000:80 --name hexo-server -d \
-v {你的用户文件夹路径}/.ssh:/root/.ssh \
-v {你的博客文件夹路径}/source:/Hexo/source \
-v {你的博客文件夹路径}/themes:/Hexo/themes \
-v {你的博客文件夹路径}/scaffolds:/Hexo/scaffolds \
-v {你的博客文件夹路径}/_config.yml:/Hexo/_config.yml \
iyannik0215/docker-hexo {你的 github username} {你的 github email} server
真实效果:
docker run --name hexo-deploy -d \
-v {你的用户文件夹路径}/.ssh:/root/.ssh \
-v {你的博客文件夹路径}/source:/Hexo/source \
-v {你的博客文件夹路径}/themes:/Hexo/themes \
-v {你的博客文件夹路径}/_config.yml:/Hexo/_config.yml \
iyannik0215/docker-hexo {你的 github username} {你的 github email} deploy
真实效果:
如果需要创建文章就手动创建到 source/_posts 目录下, 使用 docker start hexo-server, 就可以在 浏览器中实时预览了.
如果需要部署 blog, 就可以直接使用 docker start hexo-deploy, 容器会后台部署, 完毕后自动退出的.
昨天应V友需求又加入了基于 alpine 镜像的版本, 镜像与基于 ubuntu 的比较 整整少了 235M, →_→#.
Ubuntu 版本 335M 左右. Docker Tag: latest, 3.2-ubuntu
Alpine 版本 100M 左右. Docker Tag: 3.2-alpine
1
Maic 2016-05-26 09:03:17 +08:00
不懂 docker ,只能给个 666
|
2
timothyye 2016-05-26 09:05:18 +08:00 via Android
那个带 GUI 界面的是个啥工具?
|
3
DearMark 2016-05-26 09:08:18 +08:00 1
换了电脑后想要继续写博客, 就必须去装 docker-hexo, 但是毕竟不是玩 docker 的人, 每次装都会出点错误什么的, 最牛逼的一次是直接 rm -rf /usr/local/bin 里的所有东西删没了, 于是就想到了 nodejs + git 去完成 hexo 的 server 预览 和 deploy 部署 github 的任务.
(哈哈哈) |
4
dphdjy 2016-05-26 09:11:07 +08:00 via Android
其实。。。可以找个支持自动构建的 docker 服务, push 后自动构建发布~连 docker 都省了~
|
6
niko 2016-05-26 09:12:21 +08:00
感觉还是挺折腾的。现在用 travis-ci ,可以只专注 写文章,无需关注部署问题了。
|
7
iyannik0215 OP |
8
loading 2016-05-26 09:36:24 +08:00 via Android
上次没询问就清空了我的 repo ,这次呢?
|
9
isb 2016-05-26 09:36:58 +08:00
楼主用的什么发行版?主题感觉好赞。。
|
11
mudkip 2016-05-26 09:41:10 +08:00
@dphdjy
我最近写了一个自动 push 到 github 的 github webhook (我是用同一个仓库的两个分支作为 hexo 源文件和 github pages ),用 docker 跑在自己 vps 上。 https://github.com/mudkipme/mudkipme.github.io/blob/hexo/server.js https://github.com/mudkipme/mudkipme.github.io/blob/hexo/Dockerfile |
12
iyannik0215 OP |
13
janrone 2016-05-26 09:48:01 +08:00
利用 Daocloud 持续部署 Hexo 可以看看这个
http://janrone.com/2016/05/10/%E5%88%A9%E7%94%A8Daocloud%E6%8C%81%E7%BB%AD%E9%83%A8%E7%BD%B2Hexo/ |
14
zvving 2016-05-26 09:56:50 +08:00
@timothyye
@niko 说得对呀, 我们一直都是这么用的. 参见这里: https://travis-ci.org/51offer/51offer.github.com https://github.com/51offer/51offer.github.com/blob/blog/.travis.yml webhook docker 都省了…… |
15
loading 2016-05-26 10:00:30 +08:00 via Android
|
16
iyannik0215 OP @loading 我寫的這個應該會清除所有的 commit 提交,畢竟你原來的.gitdeploy 那個目錄不存在了,但是不會刪除 repo
|
17
loading 2016-05-26 10:22:05 +08:00 via Android
@iyannik0215 这是不是应该在说明里讲一下?
|
18
loading 2016-05-26 10:23:47 +08:00 via Android
@iyannik0215 应该先判断,再 clone ,再…
|
19
dphdjy 2016-05-26 10:28:51 +08:00 via Android 1
@iyannik0215
@timothyye @mudkip 用 travis-ci 这类持续集成写其实很不错哒~ 但是因为环境需求高,不如自己写个 dockerfile ,然后一般 docker 都有持续集成和自动构建 只要 push 文章,服务商会自己构建镜像,然后最后一条命令传到 GitHub 的 page 分支就好了~ |
20
kenshinhu 2016-05-26 10:34:41 +08:00
docker 好像蛮好玩似的
|
21
iyannik0215 OP |
22
4679kun 2016-05-26 11:14:21 +08:00 via Android
不如用 hugo 单文件
|
23
iyannik0215 OP @4679kun 很想用, 但是没有好看的主题...
|
24
zhenjiachen 2016-05-26 11:18:45 +08:00
docker 在国内慢的一逼。我一般是在我的 vps 上构建 docker
|
25
zrp1994 2016-05-26 11:19:17 +08:00
虽然使用 Docker 来创建本地 Hexo 工作环境有些创意,但是我觉着距离完美还是有不小的距离。
在经过实际 Pull 了楼主的镜像,外加自己也从 Dockerfile Build 了一下镜像,我在这里提几点小小的建议: 1. container 不适合做持久存储,所以可以直接挂载整个 Hexo 目录,而不是分别挂载包括 themes 、 source 这样的子目录。这样如果用户安装了其它插件, package.json 就能在本地保留,并且这些插件会生成其它文件的话(例如 hexo-generator-json-content 这个插件就会在网站根目录生成 content.json 文件),这些文件就不会被保存到 container 里,并且当 container 被删除时,你生成的这些文件不会消失,下次再使用 docker 来运行 blog 的时候, node_modules 也不用重新再安装一遍。另外当安装了一定数量的 node_modules 后, container 会变得很大; 2. 直接将整个.ssh 挂载到 container 中有些不妥,可以改成挂载单一的 key ; 3. 尝试合并 RUN 命令可以减小 Image 的大小,另外 hexo init 产生的 package.json 里面好像已经包含了"hexo-generator-archive", "hexo-generator-category", "hexo-generator-index", "hexo-generator-tag",在 Dockerfile 里面单独安装是多余的。不过考虑到 1 里面提到的问题,我觉着可以把所有的 npm 安装都从 image 里面拿掉,让用户自己在 package.json 里面修改,然后 docker run -it IMAGE_NAME npm install 安装依赖; 4. 与其从 Ubuntu 下面安装 node ,楼主可以试一下直接用 node:6.2.0-slim 作为 base image 来制作镜像,应该能减少不少 image 大小。 |
27
7jmS8834H50s975y 2016-05-26 11:29:15 +08:00 via Android
为什么不用 travis-ci 自动部署?
|
28
iyannik0215 OP @zhenjiachen 我是直接交给了 hub docker.
@zrp1994 1. 的东西感觉还是分开挂载的好, 因为 nodejs 每个人之前用的版本不一样, 插件的版本也会变化吧. 如果这样的话 容器用的 6.x 的 nodejs 但是用户以前使用的是 4.x 或者 别的版本应该会导致 容器不能正常工作的, 我是这么认为的. 2, 3, 4 的意见都很好~, 有时间的话就去改改~~ 感谢~~ @wsdjeg 想试试 但是没研究过 travis-ci |
29
niko 2016-05-26 13:39:04 +08:00
@iyannik0215 有的。 hexo 的作者自己就有写过,看这里: https://zespia.tw/blog/2015/01/21/continuous-deployment-to-github-with-travis/
|
30
iyannik0215 OP @niko 谢了~, 一会有时间就去看看.~
|
31
4679kun 2016-05-26 17:07:41 +08:00 via Android
@iyannik0215 https://libnull.com 我自己改的
|
32
Smirnoff 2016-05-26 17:36:01 +08:00
不能下载 docker pull iyannik0215/docker-hexo
docker 还需要翻墙吗? |
33
mianju 2016-05-26 19:17:34 +08:00
Mac 上装 docker 感觉好用么?表示怕出安装麻烦,一直都是用云服务器装 docker 用的
|
34
jamiesun 2016-05-26 19:20:35 +08:00
还是 github page 好使吧,
|
35
ghw 2016-05-26 19:55:15 +08:00
大神好厉害
|
36
iyannik0215 OP |
37
iyannik0215 OP @ghw 我是个渣渣...
|
38
Smirnoff 2016-05-26 23:21:40 +08:00
@iyannik0215 镜像已经搞定,但是 docker pull iyannik0215/docker-hexo 的文件
kitematic 运行的时候怎么找不到,使用 kitematic 需要在他那里下载镜像才可以吗 |
39
iyannik0215 OP @Smirnoff 用他的 cli 执行 docker pull iyannik0215/docker-hexo 就可以了, 话说应该不会找不到吧, 你重启一下 kitematic 看看.
|
40
z742364692 2016-05-26 23:40:14 +08:00 via Android
mark
|
41
hellodigua 2016-05-27 01:10:47 +08:00
好棒~mark
|
42
iyannik0215 OP @z742364692 @hellodigua 哈哈, 果然还是有人认为还不错的..
|
43
ywm8812 2016-05-27 12:11:22 +08:00
hugo+1
|
44
Smirnoff 2016-05-27 16:41:58 +08:00
@iyannik0215 你是 root 运行的吗?我的 kitematic 还是找不到镜像
|
45
iyannik0215 OP @Smirnoff 安装的时候要权限, 我一般不用 root, 没有的话就重启一下 kit, 我有时候会这样.
|
47
xhowhy 2016-07-11 20:00:06 +08:00
赞 alpine-node
|
48
a308057848 2016-08-29 14:55:27 +08:00
看到这么多 -v 不太爽,直接一个目录就可以了
|