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

MacOS下使用Docker通过Adminer连接PostgreSQL失败求助

问题分析与解决步骤

核心问题1:数据库连接串端口错误

你的migrate命令里数据库连接串写的是localhost:8080,但PostgreSQL默认端口是5432,8080是Adminer的端口,这会直接导致连接失败。

核心问题2:Docker容器间网络连通性(MacOS环境)

MacOS的Docker --network host模式和Linux存在差异,容器无法通过localhost直接访问宿主机的端口映射,可通过以下两种方案解决:

方案一:使用Docker自定义网络(推荐)

  1. 创建自定义网络:
docker network create pg-network
  1. 修改Makefile,让PostgreSQL和Adminer加入同一网络:
.PHONY: postgres adminer migrate

postgres:
    docker run --rm -ti --network pg-network -p 5432:5432 -e POSTGRES_PASSWORD=secret --name postgres-db postgres

adminer:
    docker run --rm -ti --network pg-network -p 8080:8080 adminer

migrate: 
    migrate -source file://migrations \
            -database postgres://postgres:secret@localhost:5432/postgres?sslmode=disable up
  1. Adminer连接时,服务器地址填postgres-db(即PostgreSQL容器的名称),用户名postgres,密码secret,数据库名postgres。

方案二:使用MacOS宿主机特殊地址

若不想创建自定义网络,在Adminer中连接时,服务器地址填host.docker.internal(Docker在MacOS下专门用于访问宿主机的地址),端口填5432,其余信息不变。

强制修正migrate命令

无论采用哪种方案,migrate命令的连接串必须将端口改回5432:

migrate -source file://migrations -database postgres://postgres:secret@localhost:5432/postgres?sslmode=disable up

验证步骤

  1. 启动PostgreSQL容器:make postgres
  2. 启动Adminer:make adminer
  3. 打开浏览器访问http://localhost:8080,按上述正确参数完成数据库连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:03:14