使用 Docker Desktop 部署 Halo 博客的一些尝试
原先都是在虚拟机安装 Linux 系统,然后在安装 docker 部署 halo,后来觉得既然有 WSL,就不用再通过虚拟机部署了,直接本地部署完事了。
一、环境配置
1、一台个人电脑,最好是最新的系统。
2、微软商店安装 Windows Subsystem for Linux 和 Debian 非常容易失败,按第三步走。
3、在微软官方文档查看文档用命令安装 官方文档。
4、安装完成打开 Debian,如果报错无法解析服务器的名称或地址
,参考 此文章 修改 DNS 或者 hosts 文件都可,修改 DNS 基本可以解决问题。
5、按软件提示设定用户名,设置密码。
二、安装 Docker(此步骤实测无用,留作记录)
2.1、更新系统
- 进入 root 账户,输入刚才设置密码。
1 | sudo -i |
- 更新系统
1 | apt update |
- 安装 wget 和 vim 编辑器
1 | apt install wget |
1 | apt install vim |
2.2、~~~~安装 Docker~~
电脑不应如此操作,此步骤仅作为记录。
根据官方文档操作即可。
- 卸载旧版本
1 | for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done |
- 设置 apt 存储库
1、更新软件包索引并安装软件包以允许使用 基于 HTTPS 的存储库
1 | sudo apt-get update |
2、添加 Docker 的官方 GPG 密钥
1 | sudo install -m 0755 -d /etc/apt/keyrings |
3、使用以下命令设置存储库
1 | echo \ |
- 安装 Docker 引擎
1、更新包索引
1 | sudo apt-get update |
2、安装 Docker Engine、containerd 和 Docker Compose。
1 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
3、测试是否安装成功,不过不报错就是已经成功了,不用再去拉去测试镜像了。
三、部署 Halo
3.1、创建工作目录
1 | mkdir ~/.halo && cd ~/.halo |
3.2、下载示例配置文件到工作目录
1 | wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml |
**子系统很精简,很多程序都没有,所以前面要提前安装wget和vim,否则此时会报错。
3.3、编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考
1 | vim application.yaml |
本地测试运行,不需要修改配置文件默认即可。
3.4、拉取最新的 Halo 镜像
1 | docker pull halohub/halo:1.6.0 |
如果一切按照前面步骤来,此时会报错:System has not been booted with systemd as init system (PID 1). Can’t operate. Failed to connect to bus: Host is down.
网上搜索报错内容,找到这个网页,查看里面的回答还是系统精简问题。
最后找到微软文档,按里面所说只需要安装好Docker Desktop并设置完成即可。
四、安装 Docker Desktop
官网下载完成安装即可,安装完成需要重启电脑。
重启完成,按前面微软文档对软件进行设置。
4.1、回到正轨
现在再运行拉取命令就可以进行正常拉取了。
1 | docker pull halohub/halo:1.6.1 |
4.2、创建容器
1 | docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.6.1 |
4.3、初始化
现在打开 Docker Desktop 就可以看到刚才拉取的镜像和创建的容器都在软件里面显示,点击容器里面的 ports 即可打开网页初始化博客了。
安装了 Docker Desktop 之后就可以通过 wsl 正常创建容器了,前面的安装 Docker 的步骤就多余了。
注意,关机前,应先停止 Docker 容器,否则已部署的容器数据会丢失,需要重新部署。