Docker Compose部署多Postgres服务提示角色aact不存在如何解决
问题排查解决步骤
核心原因
官方Postgres Docker镜像仅会在首次启动、数据目录为空时,读取POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB环境变量初始化用户和数据库。如果之前启动过aact服务且初始化过程出错/中断,或者遗留了旧的匿名数据卷,后续修改环境变量也不会重新初始化用户,就会出现角色不存在的报错。
排查解决步骤
- 第一步:清理旧的aact容器与残留数据卷
如果需要保留另一个Postgres服务的Airflow相关数据,单独清理aact服务即可:
如果不需要保留任何现有测试数据,可以直接清空所有服务关联卷:# 停止并删除aact容器,关联匿名卷也一并删除 docker compose rm -fsv aactdocker compose down -v - 第二步:重新启动服务并查看初始化日志
启动服务后查看aact容器的初始化日志,确认初始化过程无报错:
正常初始化会出现docker compose up -d docker compose logs aactCREATE ROLE、CREATE DATABASE的相关日志,说明aact用户和库已经创建成功。 - 第三步:验证登录
再次执行登录命令即可正常进入:docker exec -it <aact服务容器ID> psql -U aact - 第四步:异常兜底方案
如果清理后依然无法登录,可以先用默认postgres管理员账号进入容器手动创建用户:
进入psql命令行后执行以下语句:docker exec -it <aact服务容器ID> psql -U postgresCREATE USER aact WITH PASSWORD 'aact'; CREATE DATABASE aact OWNER aact; GRANT ALL PRIVILEGES ON DATABASE aact TO aact;
额外配置优化建议
你当前配置中存在无效配置项:官方Postgres镜像原生不支持POSTGRES_MULTIPLE_DATABASES环境变量,该参数仅部分第三方修改的Postgres镜像支持,所以你第二个postgres服务里的POSTGRES_MULTIPLE_DATABASES: airflow, aact配置不会生效,建议删除避免混淆。另外你已经单独部署了aact专属的Postgres服务,也不需要在Airflow的Postgres服务中创建aact库。
内容的提问来源于stack exchange,提问作者Andrew Noviello
相关产品推荐
相关产品推荐

