端口被占用,是因为你已经在主机安装了 MySQL ,也很容易解决。
情况一:如果你仅仅是想在服务器上部署 Halo ,主机上的 MySQL 没有其他作用的话,可以卸载,任何就可以正常通过官方文档中的使用Docker Compose 部署,创建 Halo + MySQL 的实例,来部署 Halo 。
情况二:你主机原有的 MySQL 有其他用途。Docker 容器的端口,并不是只能绑定在相同的主机端口上的,你可以换一个没有被占用的端口。
halodb:
...
ports:
- "[没有被占用的其他端口]:3306"
...
spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
这里的3306可能也需要改成对应端口。
情况三:最为便捷的一种方式是,直接使用官方文档中,“创建 Halo + PostgreSQL 的实例”的方式解决。PostgreSQL 使用与 MySQL 不同的默认端口,不会与主机的 MySQL 产生冲突,也不需要考虑主机的 MySQL 是否需要卸载。