- 正式开始前的说明,系统为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。