Docker容器无法连接自身主机IP创建Postgres数据库的问题排查求助
最近在用Docker跑Postgres 11容器时碰到个头疼的问题,想请教下大家:
我写了个Shell脚本create_database,用来指定IP地址创建Postgres数据库。在容器外面执行./create_database localhost的时候完全正常,能顺利创建连接到本地的数据库;但当我进入容器内部,执行./create_database <容器名称>时,虽然容器名称能正确解析成容器的IP地址,却直接报错:
psql: connection to server at <容器名称> (xxx.xx.x.x), port 5432 failed: Connection refused Is the server running on that host and accepting TCP/IP connections
我搞不懂为啥外部没问题,容器里就不行?是不是得做点配置让容器的IP允许连接啊?我知道外部访问容器要映射端口,但这个对当前场景好像没用;另外我还特意创建了Docker网络,把容器加进去,用网络里的IP去连数据库,结果还是一样失败。
下面是我的相关配置,给大家参考:
我的Dockerfile
FROM Postgres:11 COPY . . USER postgres ENTRYPOINT ["bash", "-c"]
环境配置文件(我感觉可能配错了,但就算不用这个文件,结果也没变化)
POSTGRES_USERNAME=postgres POSTGRES_PASSWORD=postgres POSTGRES_HOST=localhost POSTGRES_PORT_LOCAL=5432
运行容器的命令
docker run -it --name database --network net --rm --env-file path/to/.env database bash
对了,我用的是Linux版本的Docker 20.10.17,刚接触Docker没太久,如果有什么关键信息我漏了,大家告诉我,我马上补充!
内容的提问来源于stack exchange,提问作者aProfessionalHelpNeeder

