在进行wagtail学习的时候,我想要通过容器将后端与数据库分离,因此使用了Docker对postgres进行单独搭建。
搭建过程中报错:
Unable to connect to server: connection to server at “localhost”(127.0.0.1),port 6700 failed;Connection refused is the server running on that host and accepting TCP/IP connections?connection to server at “localhost”(::1),port 6700 failed;Address not available is the server running on that host and accepting TCP/IP connections?
错误复现
创建postgres容器时,我通过命令行:
docker run -itd --name postgresdb -e POSTGRES_PASSWORD=123456 -p 5432:5432 postgres
而后在pgAdmin或者wagtail中进行配置:
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '5432',
进行创建,创建完成后容器正常运行,但是pgAdmin进行连接或者运行python manage.py makemigrations
的时候会出现上述报错。
问题解决
通过反复尝试,问题出在HOST
以及PORT
这两个参数上面。
HOST
必须为本机实际ip地址,而PORT
必须与容器内部地址做出区分才能成功。也就是说,需要修改创建容器的指令为:
docker run -itd --name postgresdb -e POSTGRES_PASSWORD=123456 -p 6700:5432 postgres
同时修改连接参数为:
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': '123456',
'HOST': '你的实际ip地址',
'PORT': '6700',
才能成功。