Docker环境创建Halo时,无法使用MySQL的问题和临时解决方案

104

以往创建Halo时,默认会使用自带的H2数据库,但官方提示H2数据库更多适用于测试环境,所以想着今天使用MySQL作为数据库创建Halo。

官方提供了现成的Docker Compose文件,用于部署使用MySQL数据库的Halo环境,但是我已经有共用的MySQL容器了,想着改一下yml文件就能直接用了。

以下是修改后的yml文件:

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.16
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./halo2:/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=**********
      - spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/

结果改完后怎么着都不生效,开始排查问题。

  1. halo和mysql的容器在网络上的联通的。

  2. mysql的用户名密码是正确的。

  3. 已经提前在mysql中创建了halo数据库,使用root用户,密码正确无误。

最后没有办法,只能进入halo容器,直接修改application.yaml文件的连接配置,以下是修改后的内容。

重启halo容器后,就能够正常使用mysql数据库了。