ubuntu 软件源中的docker和docker-compose 版本通常比较低,用docker-compose部署halo往往会报错,推荐用 docker 官方软件源来安装。

一、卸载与官方docker 相冲突的软件包

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

顺便清理一下有残存配置信息的软件包

dpkg -l | grep ^rc | awk '{print $2}' | sudo xargs dpkg -P

二、添加官方软件源

# 添加 Docker's 官方的 GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 添加官方软件源:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 

# 更新软件数据:
sudo apt-get update 

三、安装 docker 和 docker-compose

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

四、启动docker

sudo systemctl start docker

五、下载halo镜像

sudo docker pull halohub/halo:2.13

六、创建和编辑docker-compose.yaml 文件

在你想要安装网站的地方,通常是家目录(~),创建一个 docker-compose.yaml 文件,内容如下:

version: "3"

services:
  halo:
    image: halohub/halo:2.13
    container_name: halo
    restart: on-failure:3
    network_mode: "host"
    volumes:
      - ./halo:/root/.halo2
    command:
      # 修改为你自己的 MySQL 数据库配置信息,这里使用的数据库就是下一步创建的 halo 数据库
      - --spring.r2dbc.url=r2dbc:pool:mysql://MySQL数据库地址:3306/halo
      - --spring.r2dbc.username=数据库用户名
      - --spring.r2dbc.password=数据库密码
      - --spring.sql.init.platform=mysql
      # 外部访问地址,如你的域名地址
      - --halo.external-url=http://halo.hollowman.cn/
      # 端口号 默认8090
      - --server.port=8090

七、给自己的 Mysql 数据库创建一个 halo 数据库

连接 mysql 数据库:

sudo mysql -uroot -p

创建halo数据库:

create database halo;

八、通过 docker compose 部署和创建容器

在 docker-compose.yaml 文件所在的目录通过 docker compose 来部署容器

sudo docker compose up -d

九、添加反向代理

参考前一篇文章的第四点 添加反向代理服务

十、初始化和使用 Halo

在浏览器输入:halo.hollowman.cn/console 即可初始化 Halo 个人网站了,而数据库使用的则是 mysql。