GitHub Action部署PostgreSQL12报错role "root" does not exist如何解决
问题原因
报错的触发周期与你配置的postgres健康检查10秒执行间隔完全匹配,问题核心是健康检查命令未指定数据库用户名:
pg_isready命令执行时默认会使用当前系统用户作为数据库登录角色,而Docker容器中执行健康检查命令的默认用户是root- 你在postgres配置中仅创建了名为
pguser的数据库角色,不存在root角色,因此每次健康检查都会触发role "root" does not exist报错
解决方案
修改docker-compose.yml中postgres服务的healthcheck.test配置,显式指定要使用的数据库用户名和数据库名即可:
healthcheck: test: [ "CMD-SHELL", "pg_isready -U pguser -d pgdb" ] interval: 10s timeout: 5s retries: 5
参数说明:
-U pguser指定使用你配置的pguser角色登录数据库-d pgdb指定连接你创建的pgdb库,若不需要校验库的可用性可以省略该参数
修改后重新启动服务即可消除报错。
内容的提问来源于stack exchange,提问作者rp346
相关产品推荐
相关产品推荐

