搭建环境
- 服务器:ucloud香港机
- 系统:Centos 7
- 安装好docker, docker-compose
- 域名,并解析好到服务器
操作步骤:
1.创建安装目录
mkdir -p /root/data/docker_data/halo
cd /root/data/docker_data/halo
2.创建配置文件:
vim docker-compose.yml
复制一下内容进配置文件:
version: "3"
services:
halo:
image: halohub/halo:2.10.0
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./:/root/.halo2
ports:
- "8090:8090"
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=xxxxxx
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://dongbocun.top
# 初始化的超级管理员用户名
- --halo.security.initializer.superadminusername=bocun
# 初始化的超级管理员密码
- --halo.security.initializer.superadminpassword=xxxxxx
halodb:
image: mysql:8.0.31
container_name: halodb
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=xxxxxx
- MYSQL_DATABASE=halo
networks:
halo_network:
3.服务器防火墙放行8090端口
4.启动容器
cd /root/data/docker_data/halo # 来到 docker-compose配置文件所在的文件夹下
docker compose up -d
到此就可以通过http://服务器ip:8090访问halo了。
5.反向代理
用的caddy,十分简单。
vim /etc/caddy/Caddyfile
添加以下内容:
```
解析好的域名 {
reverse_proxy 搭建halo服务器的ip:8090
}
```
重新加载caddy即可:
systemctl reload caddy
现在就可以用域名访问halo博客了。
6.更新halo
cd /root/data/docker_data/halo
docker-compose down
cp -r /root/data/docker_data/halo /root/data/docker_data/halo.archive # 万事先备份,以防万一
docker compose pull
docker compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。
docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
7.卸载halo
cd /root/data/docker_data/halo
docker compose down
cd ..
rm -rf /root/data/docker_data/halo # 完全删除映射到本地的数据
评论区