Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker官网
halo一款现代化的博客/CMS系统,开源的代码下载,完善的社区支持。
halo官网
yum install -y docker
systemctl start docker.service
docker version
systemctl enable docker.service
默认下的docker下载配置拉镜像速度很慢,可以配置为国内的镜像仓库地址,提高拉取速度。
直接编辑配置文件
vim /etc/docker/daemon.json
可以使用网易、阿里的仓库
比如使用阿里的仓库。
将加速地址编辑到daemon.json保存即可
vim /etc/docker/daemon.json
编辑加速地址进去
{
"registry-mirrors": ["加速地址"]
}
加完加速地址后,重新加载配置文件,重启 docker 服务即可:
systemctl daemon-reload
systemctl restart docker.service
可以参考halo官方文档,也可以按照我的教程!
mkdir ~/.halo && cd ~/.halo
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
如果报找不到命令,就
yum install wget
vim application.yaml
关于配置文件可以修改一些端口等配置,主要说说下数据源的配置和选择
halo目前支持两种数据库h2和mysql,默认部署时启用的是h2数据库,参见上面文件的配置
如果需要更换数据库为mysql,需要将配置文件的mysql注释取消添加好自己的mysql配置后,再讲h2的配置注释掉。
那么,如何到底如何选择数据库呢?
根据官方文档一些给出一些建议参考
关于h2和mysql的优缺点:
能更快的完成 Halo 的搭建。
无需单独安装 H2,数据库随着 Halo 的启动而创建。
比 MySQL 更节省资源占用,尤其是你的服务器配置不佳的情况下。
性能方面与 MySQL 基本无异(对于这种小型应用),实测 1000 篇文章的情况下,毫无压力。
不会因为某个配置不对而导致 Halo 无法正常使用,没有乱七八糟的问题。
更符合 Halo 数据架构的特点,所有数据(数据库物理文件,主题文件,上传的附件,日志等)均放在 ~/.halo 文件夹内,所以备份迁移极其方便。
如上所述,目前所有备份相关的功能均针对 H2。MySQL 的备份暂无计划。
管理不方便,虽然有在线的控制台,但是并不好用。
管理方便,你可以开启远程连接,在自己电脑即可管理数据库。不过目前halo已经做了一些 开发者功能,似乎也没必要怎么管理。
部署麻烦,还需要单独跑一个 MySQL,不能做到 Halo 开箱即用。
占用内存,尤其是你服务器内存不够的情况下,宛如雪上加霜。当然,服务器强壮的话可无视。
版本太多,当你安装了一个 Halo 不支持的版本(目前支持 5.7+)的时候,可能会无法正常使用,甚至无法正常启动。
配置繁琐,你可能需要配置如字符集这样的东西,对新手来说极不友好。(字符集 utf8mb4 collate utf8mb4_bin)
备份迁移麻烦,你不但需要备份 ~/.halo,还需要导出数据库脚本。
目前暂不支持后台备份 MySQL 数据。(重要)
docker pull halohub/halo:1.4.12
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.4.12
-it: 开启输入功能并连接伪终端
-d: 后台运行容器
–name: 为容器指定一个名称
-p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
-v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
–restart: 建议设置为 unless-stopped,在 Docker 启动的时候自动启动 Halo 容器。
打开 http://ip:端口号 即可看到安装引导界面
完成引导安装,可以在控制台更改设置,添加主题等。
你的http://ip:8090/ 博客首页
你的http://ip:8090/admin 博客控制台页面
8090为部署时默认端口。