使用 docker-compose 搭建个人博客 Halo

目录

说明

我这里使用的是 Halo 作为博客的工具,毕竟是开源了,也是使用 Java 写的嘛,另外一点就是使用 docker 来安装(自动挡,不用自己考虑太多的环境因素),这样子搭建起来更快一点,我们这里核心就两步:

  • docker-compose 的安装
  • Halo 的安装

我这边的docker 版本如下:

docker 版本

docker-compose 安装

好了,废话就不多说了,我们现在开始看看怎么去搭建把。下面我也会把我遇到的几个坑给大伙说下,尽量避免我遇到的那些坑,忒别耗时。

安装步骤
这里我们可以看下Github上面官方的版本
官方的版本
正确的安装过程

具体执行的命令如下:

# 下载 docker-compose 文件
curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 给他一个执行权限
chmod +x /usr/local/bin/docker-compose

# 查看是否安装成功
docker-compose -version

错误的安装过程

上面为什么要使用最新的呢?那是因为我遇到了这个问题,在使用 docker-compose.yaml 创建容器的时候,报错:

ERROR: The Compose file './docker-compose.yml' is invalid because:
services.halo.healthcheck value Additional properties are not allowed ('start_period' was unexpected)
services.halodb.healthcheck value Additional properties are not allowed ('start_period' was unexpected)
services.halo.depends_on contains an invalid type, it should be an array

后面在 docker-compose部署报错 #4110 找到了答案,因为我本地的docker-compose 的版本太低了,之前我安装的是 1.26.2 这个版本,后面干脆一点,升到最新算了。

卸载docker-compose

这里顺便说明下,怎么卸载的,如果是知道的同学,就直接看下面的把,不用在这里浪费时间了。

# 因为我这边是通过 curl 下载的,所以可以直接 rm 就好
rm /usr/local/bin/docker-compose

另外我也发现,可以使用上面安装的方式,直接再次 curl -L 下载对应的版本就好了,会直接覆盖安装。

Halo 搭建

好了,这里我们搭建 Halo 就很方便了,直接按照官方的文档来吧,很快就搞定了

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

mkdir ~/halo && cd ~/halo

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

第二步: 创建 docker-compose.yaml,这里我没有修改下面的配置,直接搭建的

需要注意的是,此文档为了更加方便的管理配置,所有与 Halo 相关的配置都使用 Docker 容器启动参数代替,所以无需创建 application.yaml 文件。

创建 Halo + PostgreSQL 的实例: *~/halo/docker-compose.yaml**

version: "3"

services:
  halo:
    image: halohub/halo:2.15
    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:

此示例的 PostgreSQL 数据库容器默认没有设置端口映射,如果需要在容器外部访问数据库,可以自行在 halodb 服务中添加端口映射,PostgreSQL 的端口为 5432

docker-compose.yaml

第四步: 启动 Halo 服务

docker-compose up -d

docker-compose up
其实到此我们就完成了,后面我就看下 log 以及 容器就好了

查看 log

docker-compose logs -f

查看日志

查看容器
我们可以看到容器的情况,最开始需要一点时间 starting ,启动完了之后,就是 healthy
容器

效果

好了好了,我们最后来看下效果把,最开始需要我们初始化,这个界面我就跳过去了,就是填写下用户名和密码,邮箱,博客名称。

前端界面
前端界面
后端管理界面
后台管理界面

OK,到此就搞定了。如果是 docker-compose 没有出bug,我感觉可以在几分钟之类搞完这个,就看下 docker 获取镜像的时间,搞完了之后,直接启动就好了。

相关推荐

  1. github

    2024-05-12 18:50:05       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 18:50:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 18:50:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 18:50:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 18:50:05       20 阅读

热门阅读

  1. Python 原生爬虫

    2024-05-12 18:50:05       6 阅读
  2. 关于react的注意事项和问题

    2024-05-12 18:50:05       12 阅读
  3. docker配置GPU支持

    2024-05-12 18:50:05       9 阅读
  4. 计算机网络实验——学习记录七(IP协议)

    2024-05-12 18:50:05       9 阅读
  5. AES对称加密算法原理、C++代码示例

    2024-05-12 18:50:05       9 阅读
  6. Android 面试常见知识点总结(持续更)

    2024-05-12 18:50:05       13 阅读
  7. 知网相关文章采集

    2024-05-12 18:50:05       12 阅读
  8. [力扣题解]53. 最大子数组和

    2024-05-12 18:50:05       11 阅读