R. *_*ras 2 python postgresql psycopg2 docker
我使用以下命令创建了一个运行Postgres的Docker镜像:
docker pull postgres
docker run --name test-db -e POSTGRES_PASSWORD=my_secret_password -d postgres
然后我创建了一个名为test的表,并将一些随机数据插入到几行中.我现在尝试通过本地计算机上的Python中的psycopg2建立与此数据库表的连接.我使用该命令docker-machine ip default找出机器的IP地址为192.168.99.100并使用以下内容尝试连接:
conn = psycopg2.connect("dbname='test-db' user='postgres' host='192.168.99.100' password='my_secret_password' port='5432'")
Run Code Online (Sandbox Code Playgroud)
这不适用于"OperationalError:无法连接到服务器:连接被拒绝(0x0000274D/10061)"的错误消息
..
一切似乎都井井有条,所以我想不出为什么会被拒绝.根据这个postgres图像的文档,(在https://hub.docker.com/_/postgres/)这个图像包括EXPOSE 5432(postgres端口),默认用户名是postgres.
我还尝试将docker inspect test-db | grep IPAddress | awk 'print{$2}' | tr -d '",'我在SA上找到的图像本身的IP地址转换为一篇略有相关的文章,但该IP地址也不起作用.
该EXPOSE指令可能不会做你期望的.它用于Docker网络内的链接和容器间通信.从Docker桥接网络外部连接到容器时,需要使用发布到端口-p.尝试添加-p 5432:5432到您的docker run命令,使其看起来像:
docker run --name test-db -e POSTGRES_PASSWORD=my_secret_password -d -p 5432:5432 postgres
Run Code Online (Sandbox Code Playgroud)
以下是发布端口和公开端口之间差异的合理解释:https://stackoverflow.com/a/22150099/684908.希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
3380 次 |
| 最近记录: |