使用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(非必选)打开防火墙
这里以阿里云为例,部分服务商没有管理面板可跳过。
3.启动halo
docker-compose up -d
这个时候理论上我们已经可以通过http://ip:8090
访问了。