当前位置: 首页 > news >正文

让 pgAdmin 和 PostgreSQL 运行在同一个 Docker 网络中。

明白了,您希望用 pgAdmin 来管理运行在 Docker 容器里的 PostgreSQL 数据库。最可靠且易于管理的方式是让 pgAdmin 和 PostgreSQL 运行在同一个 Docker 网络中

下面给您一个最简洁的Docker Compose 方案,您只需要复制保存、启动,就能通过浏览器访问 pgAdmin 并连接数据库。


✅ 推荐方案:使用 Docker Compose

1. 创建docker-compose.yml文件
version:'3.8'services:postgres:image:postgres:latestcontainer_name:my_postgresrestart:alwaysenvironment:POSTGRES_USER:admin# 数据库用户名POSTGRES_PASSWORD:secret123# 数据库密码POSTGRES_DB:mydb# 默认数据库名ports:-"5432:5432"volumes:-postgres_data:/var/lib/postgresql/datanetworks:-pg_networkpgadmin:image:dpage/pgadmin4:latestcontainer_name:my_pgadminrestart:alwaysenvironment:PGADMIN_DEFAULT_EMAIL:admin@example.com# pgAdmin 登录邮箱PGADMIN_DEFAULT_PASSWORD:pgadmin123# pgAdmin 登录密码ports:-"5050:80"depends_on:-postgresnetworks:-pg_networknetworks:pg_network:driver:bridgevolumes:postgres_data:
2. 启动服务

docker-compose.yml所在目录执行:

docker-composeup-d
3. 登录 pgAdmin 并添加数据库服务器
  • 打开浏览器访问:http://localhost:5050
  • 登录邮箱:admin@example.com,密码:pgadmin123
  • 点击Add New Server
    • Name:任意填写(如我的PostgreSQL
    • Connection页签:
      • Host name/address:填写postgres(这是 Compose 中的服务名,会被自动解析为 PostgreSQL 容器的 IP)
      • Port5432
      • Maintenance databasemydb
      • Usernameadmin
      • Passwordsecret123
    • 点击Save即可完成连接。

⚠️ 关键点说明

  • 为什么主机地址填postgres而不是localhost
    因为两个容器在同一个自定义网络pg_network中,可以直接用服务名(postgres)互相访问。localhost在 pgAdmin 容器里指向它自己,所以填localhost会连接失败。

  • 如果想把 pgAdmin 安装在本机(非容器),连接时主机地址填localhost,但必须确保 PostgreSQL 容器将端口映射到宿主机(上面已经做了ports: - "5432:5432")。


🧪 测试连接是否正常

进入 PostgreSQL 容器创建一个测试表,然后通过 pgAdmin 查看:

dockerexec-itmy_postgres psql-Uadmin-dmydb

在 psql 中执行:

CREATETABLEtest(idint);\d

刷新 pgAdmin 左侧树,就能看到新建的表。


如果您在操作中遇到具体错误(比如容器无法启动、连接超时等),请把错误信息发给我,我会帮您分析解决。

http://www.jsqmd.com/news/610417/

相关文章:

  • EPLAN P8 2023电缆导出实战:3分钟搞定BOM表与模块IO配置(附脚本文件)
  • DLSSTweaks完全掌握指南:从基础配置到场景化应用
  • Electron实战:解决微信登录页二维码不显示的5个关键配置(附完整代码)
  • 定义即定价,定价即风险 | 词元(Token)定名背后的冷思考
  • 你还在手写CRUD?.NET 9低代码平台已支持SQL Server → Entity Framework Core → Blazor WASM全自动逆向生成(含动态权限注入引擎)
  • 从饱和长度到设计规则:用ADS Batch仿真快速定位串扰风险区域
  • Spring AI Alibaba 分布式智能体实战:基于 A2A 协议的架构演进与落地
  • 国产信创库fio破坏主备库以及备份故障处理--惜分飞阉
  • MedOpenClaw:给GPT-5.4更多工具反而变差,TUM+牛津+帝国理工揭开工具使用悖论
  • 专业数据恢复师工具箱揭秘:UFS Explorer Pro的5个高级功能实战解析
  • iOS UI美化技巧:如何用CAGradientLayer给视图和边框添加炫酷渐变色(避坑指南)
  • [具身智能-299]:对于工业上连续变化的时序电压信号,如果使用AI来进行特征的识别和分类,使用哪些库?有哪些可能的模型和解决方案?
  • AI 驱动的 UML 图表支持全景指南
  • 3步掌控百度网盘CLI:从无界面管理到自动化工作流
  • 深入解析javac编译错误:程序包XXX不存在的排查与修复指南
  • 为什么你的Polars 2.0 pipeline在生产环境突然变慢300%?:揭秘Arrow 15.0兼容性断裂点与降级熔断策略
  • 本地AI竞技场:Gemma-3-12b-it与Qwen在OpenClaw任务中的对比
  • Trae 国际版下载地址
  • Python原生AOT编译插件2026版上线(仅限CPython 3.14+认证环境,过期即失效)
  • 【自然语言处理 NLP】7.1.2 表示工程与推理监控
  • 基于反激变换器的矿用本质安全型电源设计:两级保护、过压过流功能及MATLAB仿真文件
  • 保姆级教程:用Diffusers在低显存GPU上跑通Z-Image-Turbo(附完整代码)
  • Twitter运营完整流程:从0到引流获客全流程拆解(2026)
  • Git常用命令速查手册,微硕WST8205A双N沟MOSFET,汽车阅读灯静音负载开关。
  • 2026好用的企业知识库汇总:11款工具实测与建议
  • [具身智能-300]:音频文件的格式与内容
  • Debian根文件系统定制:从零构建到实战优化
  • 一张图看懂大模型、Agent、SKILL等核心概念,秒变AI达人!
  • 【异常】Qclaw图片附件发送失败(大小超限)问题 发送失败: Error: attachment image: exceeds size limit (6765925 > 5000000 bytes
  • Claude Code + Suno MCP:在终端中创建 AI 音乐