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

Docker中pgAdmin与PostgreSQL连接问题:容器数据库为空

问题原因分析

你的核心问题是Docker容器挂载的数据目录和你之前Homebrew安装PostgreSQL的数据目录不一致:

  • 你之前通过Homebrew安装的PostgreSQL,数据默认存储在Homebrew指定的系统目录(比如/usr/local/var/postgresql@13),而非你当前命令中挂载的$(pwd)/ny_taxi_postgres_data。
  • 当你用-v $(pwd)/ny_taxi_postgres_data:/var/lib/postgresql/data启动Docker容器时,这个本地目录是空的,PostgreSQL会自动初始化一个全新的空数据库环境,自然看不到之前的yellow_taxi_data表。
解决办法

有两种可行方案,根据你的需求选择:

方案一:直接挂载Homebrew PostgreSQL的数据目录到Docker容器

  1. 找到Homebrew PostgreSQL的数据目录
    打开终端运行:

    brew info postgresql@13
    

    在输出中找到Data directory字段,比如类似:/usr/local/var/postgresql@13。

  2. 清理现有Docker容器
    先停止并删除当前的pg-database容器:

    docker stop pg-database
    docker rm pg-database
    
  3. 重新启动Docker容器,挂载正确的数据目录
    将命令中的-v参数替换为你找到的Homebrew数据目录,注意保持PostgreSQL版本和Docker镜像一致(你用的是postgres:13,确保Homebrew安装的也是13版本):

    -e POSTGRES_USER="root" \
      -e POSTGRES_PASSWORD="root" \
      -v /usr/local/var/postgresql@13:/var/lib/postgresql/data \
      -p 5431:5432 \
      --network=pg-network \
      --name pg-database \
      postgres:13 
    

    注意:不需要指定POSTGRES_DB="ny_taxi",因为原有数据目录里已经包含这个数据库。

  4. 修复目录权限(若出现启动错误)
    如果容器启动失败,大概率是权限问题,Docker容器内的PostgreSQL进程用postgres用户(UID=999)运行,需要给本地数据目录设置对应权限:

    sudo chown -R 999:999 /usr/local/var/postgresql@13
    

方案二:将Homebrew中的数据迁移到Docker容器的挂载目录

如果你不想直接修改系统目录权限,可以通过数据导出/导入迁移:

  1. 启动Homebrew的PostgreSQL服务

    brew services start postgresql@13
    
  2. 导出ny_taxi数据库的数据
    替换your_homebrew_user为你Homebrew PostgreSQL的默认用户(通常是你的Mac用户名):

    pg_dump -U your_homebrew_user ny_taxi > ny_taxi_dump.sql
    
  3. 停止Homebrew的PostgreSQL服务

    brew services stop postgresql@13
    
  4. 启动Docker容器(挂载空目录)
    用你原来的命令启动容器,此时容器会创建空的ny_taxi数据库。

  5. 将数据导入到Docker容器的数据库

    docker exec -i pg-database psql -U root ny_taxi < ny_taxi_dump.sql
    
额外注意事项
  • 确保Docker PostgreSQL镜像版本和Homebrew安装的版本一致,避免因版本差异导致的数据兼容性问题。
  • 后续如果需要保留Docker容器的数据,不要删除挂载的本地目录,否则数据会丢失。

内容的提问来源于stack exchange,提问作者Kris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:35:14