win10使用docker写hexo博客

日常作业平台换为win10后,博客需要恢复活力。

问题

hexo博客使用nodejs后端框架,win平台上使用不方便。尝试过使用win10 ubuntu bash,无法安装完全npm包。尝试使用hyper-v虚拟机,过程不流畅。最终选择使用docker,挂在本地目录,在docker中写blog,在宿主机查看效果。

处理过程

1 安装docker环境

  1. 操作系统为win10专业版,bios开启虚拟化支持,开启windows功能hyper-v。
  2. 注册docker账号,下载”Docker for Windows Installer.exe”百度云
  3. 验证docker环境,执行docker info,能显示正确信息,表面docker安装成功。
  4. 修改docker镜像为中国地址。右键点击鲸鱼图标-settings-deamon-registry mirrors中输入https://registry.docker-cn.com并应用。

2 测试并制作hexo-server的docker镜像

通过docker search hexo或在dockerhub,查看hexo相关的镜像的Dockerfile,了解基本的制作过程。发现使用node镜像制作hexo server比较方便。
使用node镜像运行container,运行安装hexo测试

1
2
3
4
5
6
7
8
9
10
11
12
13
# powershell 中运行
cd ~
mkdir myweb && cd myweb
docker run -v C:\Users\admin\myweb:/mnt -p 80:4000 --name hexo_server -it node env LANG=C.UTF-8 /bin/bash
# 在docker中运行
apt update
apt install vim -y
npm install hexo-cli -g --registry=https://registry.npm.taobao.org
cd /mnt
hexo init blog
#如果init报错,则到blog目录中执行npm install --registry=https://registry.npm.taobao.org
hexo s
# 在宿主机浏览器访问http://127.0.0.1,出现hexo博客即表明运行成功。

3 将部署过镜像化

参考https://hub.docker.com/r/emitting/hexo/~/dockerfile/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# powershell运行
cd ~\docker
vim Dockerfile
## 内容如下
# use the node base image provided by official repo
FROM node
MAINTAINER hhzzer "csdnmy@gmail.com"

# prepare work directory
WORKDIR /blog
# install vim
RUN apt update
RUN apt install vim -y
# install hexo
RUN npm install hexo-cli -g --registry=https://registry.npm.taobao.org
# replace this with your application's default port
EXPOSE 4000
## 结束
docker build -t hexo-server:v1 .
docker image ls

4 使用hexo-server镜像运行容器写博客

1 将原hexo博客文件除npm模块目录外,复制到目录”~/myweb/blog”
2 在powershell中使用自定义镜像,运行容器,并初始化原博客

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# powershell 执行
docker run -v C:\Users\admin\myweb\blog:/blog -p 80:4000 --name hexo -it hexo-server:v11 env LANG=C.UTF-8 /bin/bash
# 容器中执行
# 安装npm包
npm install --registry=https://registry.npm.taobao.org
hexo s #测试
hexo new new-post
vim source/_post/new-post.md
#配置git及hexo免密发布博客
git config --
git config --
vim _config.yaml #将里面的github地址写为ssh格式 git@github....
#使用sshkeygem,生成密钥,拷贝公钥到blog的仓库的部署密码处。
#设置时区
dpkg-reconfigure tzdata

遇到的问题及解决

  1. docker字符界面输入中文问题
    通过在container启动中加入环境变量参数”env LANG=C.UTF-8”解决。
  2. 运行容器时无法映射端口
    原因是宿主机网络切换,重启docker-deamon解决
  3. 无法挂载本地目录
    在docker-deamon中settings-sharedvice中勾选驱动器。

    后续改善

    可以把时区设置配置到镜像制作中

    参考链接

    http://www.ruanyifeng.com/blog/2018/02/docker-wordpress-tutorial.html
    https://my.oschina.net/piorcn/blog/324202
    http://blog.shiqichan.com/Input-Chinese-character-in-docker-bash/
    http://blog.163.com/zilichen0213@126/blog/static/17303755520118423614908/