使用Docker Compose部署halo

前言

大家好,我是ccc,大家最近写文章的热情都很高,我也凑热闹来写一篇。

其实没什么内容好写的,不过林哥说可以随便写点最近的事,门槛放的很低。

最近刚好想鼓捣一个自己的博客,刚好就趁着这个机会搭建一个自己的博客吧。

需求

因为我写文章的设备不固定,又或者突然有了感悟想记录分享出来,所以我对博客的要求是得有后台,可以随时编辑,

这样的话静态博客就不在考虑范围内了。对比了一下比较热门的博客网站后,最终选择了halo。

搭建halo

服务器我选择的是阿里云的香港轻量应用服务器。

系统是Debian 11.3

安装Docker&Compose

我打算用docker来部署halo,所以第一步就是先安装Docker。.

0.卸载可能和docker冲突的包。

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

1.设置docker的储存库

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/debian/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/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

2.安装docker软件包

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

3.安装Compose

最新版的docker自带compose的插件版,所以不需要额外安装。

接下来就可以安装halo了。

安装halo

1.创建halo文件夹

mkdir -p ~/data/docker_data/halo && cd ~/data/docker_data/halo

2.创建 docker-compose.yaml

nano docker-compose.yaml

接下来粘贴下面的配置

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.20
    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
    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: postgres:15.4
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./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+x退出,然后按y保存,最后按enter确认。

2.1(非必选)打开防火墙

这里以阿里云为例,部分服务商没有管理面板可跳过。

image-20241014204304975

image-20241014204403416

3.启动halo

docker-compose up -d

这个时候理论上我们已经可以通过http://ip:8090访问了。


消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息