• 正式开始前的说明,系统为Ubuntu 24,使用的是docker而不是docker-compose
  • 这里使用的halo2以及mysql全部使用docker镜像
  • 由于目前docker镜像源不稳定,所以不提供拉取镜像的命令(可能用不了)

1. 安装Docker

2. 新建docker网络

docker network create net   # net改为你喜欢的名字,但是后面的命令中同样要改

3. docker中安装、运行mysql

  • 首先拉取mysql镜像
  • 使用如下命令运行
docker run -it -d \
-e MYSQL_ROOT_PASSWORD="这里改为你的root密码" \
--network net \
-v /mysql/data:/var/lib/mysql \
--restart=always \
--name=mysql \
-p 3306:3306 \
mysql
  • 进入刚刚创建的mysql容器
docker exec -it mysql bash
  • 创建一个数据库,名为halo2,如果你直接使用root作为mysql操作用户,则不用设置权限。

4. docker中安装、运行halo2

  • 首先拉取halo2镜像
  • 使用如下命令运行
docker run \
  -it -d \
  --name halo \
  -p 8090:8090 \
  --network net \
  -v ~/.halo2:/root/.halo2 \
  --restart=always \
  registry.fit2cloud.com/halo/halo:2.20  \
  --halo.external-url=换成你的对外IP或者域名,比如我的http://blog.channelcz.top/ \
  --halo.security.initializer.superadminusername=管理员账号 \
  --halo.security.initializer.superadminpassword=设置管理员密码 \
  --spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo2 \
  --spring.r2dbc.username=root \
  --spring.r2dbc.password=填写mysql的root密码

注意这里的 -p 8090:8090 为端口映射(计算机对外端口 : 容器对外端口),如果你不配置nginx,只使用http,则可以换为 -p 80:8090

注意这里的 --spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo2 \ 这里有个小坑,可以看到IP中使用了域名mysql,这时docker可以自动解析的,因为刚刚配置了名为mysql的容器,并且--network都设置为同一个(net),所以能成功解析为mysql容器的内部IP,有时候不指定--network为自定义网络可能不行,猜测和docker版本有关,也可能是bug。

不出意外,现在就可以通过http://ip:port来访问你的网页了

5. 如果你打算配置nginx,那么也可以继续参考这篇

Nginx配置http、https反向代理