Docker Compose编排SpringBoot+PostgreSQL+Metabase连接被拒求助
问题排查与修复方案
你遇到的连接报错是配置错误导致的,共有以下几处需要修正:
- Metabase数据库主机地址配置错误
当前配置MB_DB_HOST=0.0.0.0指向的是Metabase容器自身的本地地址,而PostgreSQL运行在独立的db服务容器中。同一docker compose网络下的服务互访直接使用服务名作为主机名即可,和Spring服务的配置逻辑一致,这里需要修改为MB_DB_HOST=db。 - Metabase数据库名配置错误
当前配置MB_DB_DBNAME=db不符合实际的库名设置,从Spring的数据源URL可以看到PostgreSQL中的实际库名为compose-postgres,这里需要修改为MB_DB_DBNAME=compose-postgres。 - 无效且易冲突的端口配置
Metabase服务下的"5432:5432"端口映射完全多余,Metabase本身不运行PostgreSQL服务,这个配置只会把宿主机的5432端口绑定到Metabase容器的5432端口,反而容易造成端口冲突,直接删除该行即可。你之前对端口映射的理解有误:docker compose的ports是「宿主机端口:容器内端口」的映射规则,仅用于暴露服务到宿主机/公网,同网络下的容器互访不需要配置端口映射,直接通过服务名+容器内部端口访问即可。 - PostgreSQL密码可能不匹配
你在db服务中配置的POSTGRES_PASSWORD为隐去的星号值,但Spring和Metabase的数据库密码都配置为same,请确认POSTGRES_PASSWORD的实际值为same,否则会出现鉴权失败的问题。 - 多余的无效配置
db服务下的METABASE_PASSWORD=same是无效配置,PostgreSQL官方镜像不会读取这个环境变量,可以直接删除。
修复后的metabase服务配置参考
metabase: container_name: metabase-container restart: "always" image: metabase/metabase ports: - "3000:3000" environment: - MB_DB_TYPE=postgres - MB_DB_DBNAME=compose-postgres - MB_DB_PORT=5432 - MB_DB_USER=compose-postgres - MB_DB_PASS=same - MB_DB_HOST=db - MB_ENCRYPTION_SECRET_KEY=********
内容的提问来源于stack exchange,提问作者user16806803
相关产品推荐
相关产品推荐

