Docker容器连接另一容器中Postgres失败的问题求助
问题原因
- 容器内的
localhost指向容器自身,而非宿主机,因此使用localhost:5431无法连接到宿主机上映射的Postgres端口。 - 虽然你用了
--link关联容器,但仍错误使用了宿主机的映射端口,容器间通信应直接使用Postgres容器内部的端口。
解决方法
- 修正POSTGRES_URL:将连接地址中的
localhost:5431替换为Postgres容器名称upbeat_leakey,端口改为容器内部的5432,最终地址为:postgres://postgres:83355806@upbeat_leakey:5432/test - 重新启动应用容器:执行以下命令:
sudo docker run --env POSTGRES_URL=postgres://postgres:83355806@upbeat_leakey:5432/test --link upbeat_leakey -p 3000:3000 my-app:dev
补充说明
- 通过
--link关联容器后,Docker会自动在应用容器的hosts文件中添加Postgres容器的域名映射,直接使用容器名称即可访问Postgres服务。 - 宿主机的
-p 5431:5432端口映射仅用于宿主机或外部设备访问Postgres,容器间通信无需经过宿主机端口,直接使用容器内部的5432端口即可。
内容的提问来源于stack exchange,提问作者Shanthan Reddy
相关产品推荐
相关产品推荐

