个人博客容器化改造实践-第一期

Hexo容器化改造一期顺利竣工

先看看我现在的博客架构图

每当我写完博客之后就会在本地使用

1
hexo g -d

这个命令,将写好的markdown格式的博客渲染成html文件,再推送到腾讯云上的git仓库里去,然后就能被访问了。

但是这有个问题,就是如果服务器迁移,我每次都需要在裸机上建用户,安依赖,配置依赖。而如果我把这些放到docker里,我只需要做一次,然后之后再迁移只需要保证有docker环境就可以从docker hub 上把我的镜像 pull 下来,开箱即用了。

顺便借这个机会复习一波 docker 知识岂不美哉。

OK,下来我们 Docker 走起。

首先,下载基础镜像,我Ubuntu用的较多,所以系统层的镜像就用Ubuntu了。

到 Docker Hub 里找到 Ubuntu 官方镜像,下载。 命令已经有了。

可以看到这个镜像只有69.9MB 非常小,但是换来的就是啥也没有。

启动镜像:

1
2
3
4
docker run -it -d <container name>:tag

##实例
docker run -it -d funnycodingxu/hexo:latest

进入docker终端之后我们开始安装环境,配置依赖。

然后我们需要安装的环境:

  • ping
  • wget
  • node
  • git
  • nginx
1
2
3
4
5
6
7
8
9
10
11
sudo apt-get update //先更新一下依赖

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash // 安装nvm 使用nvm来管理node依赖

//安装完 nvm 记得在 环境变量里配置,安装完有提示的。

apt-get install net-tools //安装ping工具

sudo apt-get install git // 安装 git

sudo apt-get install nginx //安装 nginx

这些完成后就可以开始配置了。

配置nginx

期间踩了个坑,nginx默认文件 nginx.conf 首行的user是 www.data,结果nginx起来之后一直403.

查看 nginx 错误日志

forbidden错误,查了一下跟权限有关然后我使用

1
ps -ef|grep nginx

看到是root用户启动的nginx,于是把该配置文件的用户改为root,bug解决。

然后继续配置Nginx

这个是简化版的配置,没有考虑SSL以及别的,先试试能不能用嘛,基础环境搭好之后再把我现在完整的配置加进去。

配好之后

1
/etc/init.d/nginx restart
重启 nginx 见证奇迹

这个是我当时在vps上用 hexo server启动之后访问的。 这里还有一个重要的点要说,关于 Docker 的网络模式。

这是默认的三种,bridge是桥接,相当于依附于宿主机。

Host则是与主机享受相同的 name space。

放到上面的例子就是 我如果用bridge模式启动docker 我直接用宿主机的ip:port 是无法访问到docker中的hexo 或者 nginx 的。但是当我用 host 模式启动容器时,则顺利访问。

OK 博客容器化改造一期完成,骨架已经完了。期间对 Docker又温习了一遍,容器这块的重点我感觉是存储以及网络,特别是网络,挺复杂的。以后实践一下多个容器之间通信的场景。

分享到:
0%