You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:09:00