一、操作系统需求

Ubuntu 22.04 (LTS)

二、卸载旧版本

在安装Docker Engine之前,你需要卸载所有冲突包。

你的 Linux 发行版可能会提供非官方的 Docker 包,这些包可能会和Docker提供的官方包冲突。你必须卸载这些包。

非官方的卸载包有:docker.io docker-compose docker-compose-v2 docker-doc podman-docker

执行以下命令卸载所有冲突包:

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)

三、安装Docker

将 Docker 源替换为阿里云镜像

在终端中复制并执行下面这行命令,这会把配置文件里的官方域名替换成阿里云的域名:

sudo sed -i 's|https://download.docker.com|https://mirrors.aliyun.com/docker-ce|g' /etc/apt/sources.list.d/docker.sources

刷新软件列表

替换完成后,让系统重新读取新的国内镜像源地址:

sudo apt update

执行安装命令

更新成功后,运行 Docker 安装命令:

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

验证是否安装成功

你可以直接在终端中运行以下命令来检查它是否正常工作:

docker compose version

四、安装Halo

创建容器

在系统任意位置创建一个文件夹,此文档以 ~/halo 为例。

注意:后续操作中,Halo 产生的所有数据都会保存在这个目录,请妥善保存

创建 docker-compose.yaml

准备干净的工作目录

执行:

mkdir -p ~/halo && cd ~/halo
rm -f docker-compose.yaml

执行下面的命令打开编辑器:

nano docker-compose.yaml

把下面这段复制到编辑器里面:

services:
  halo:
    # 这里使用的是官方提供的国内加速镜像库,并且改为了开源免费的社区版
    image: registry.fit2cloud.com/halo/halo:2.25
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      # PostgreSQL 的密码,必须与下方 POSTGRES_PASSWORD 保持一致
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      # 你的访问地址(如果以后配了域名,记得把这里改成域名的形式)
      - --halo.external-url=http://localhost:8090/
  
  halodb:
    image: docker.m.daocloud.io/library/postgres:15.4
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      # 将数据库的数据挂载到宿主机的 ./db 目录,保证数据不丢失
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

Ctrl + O,再按 Enter 确认,最后按 Ctrl + X 退出。

现在,你可以执行以下官方启动命令:

sudo docker compose up -d

启动成功后,浏览器输入:http://<你的服务器IP>:8090 就可以进入Halo管理面板了