为什么我能';无法连接到docker中的postgres?

为什么我能';无法连接到docker中的postgres?,docker,docker-compose,docker-network,Docker,Docker Compose,Docker Network,我用过这个项目。两个docker容器均已成功启动 kshnkvn@kshnkvn-vb:~$docker ps 容器ID映像命令已创建状态端口名称 10fafbab73dc OpenPoiseService_gunicorn_烧瓶“/ops_venv/bin/gunic…”23分钟前上升22分钟0.0.0.0:5000->5000/tcp OpenPoiseService_gunicorn_烧瓶1 a66fe5691455 kartoza/postgis:11.0-2.5“/bin/sh-c/d

我用过这个项目。两个docker容器均已成功启动

kshnkvn@kshnkvn-vb:~$docker ps
容器ID映像命令已创建状态端口名称
10fafbab73dc OpenPoiseService_gunicorn_烧瓶“/ops_venv/bin/gunic…”23分钟前上升22分钟0.0.0.0:5000->5000/tcp OpenPoiseService_gunicorn_烧瓶1
a66fe5691455 kartoza/postgis:11.0-2.5“/bin/sh-c/docker-…”23分钟前上升22分钟5432/tcp OpenPoiseService\u psql\u postgis\u db\u 1
但是,当试图检查服务的功能时,他无法连接到数据库。我尝试手动执行此操作:

kshnkvn@kshnkvn-vb:~$docker exec-it 10fafbab73dc/bin/bash
root@10fafbab73dc:/deploy/app#psql-h localhost-U gis_admin-gis
psql:无法连接到服务器:连接被拒绝
服务器是否在主机“localhost”(127.0.0.1)上运行并接受
端口5432上的TCP/IP连接?
无法连接到服务器:无法分配请求的地址
服务器是否在主机“localhost”(::1)上运行并接受
端口5432上的TCP/IP连接?
root@10fafbab73dc:/deploy/app#
奇怪,如果容器网络的类型是网桥,请检查:

kshnkvn@kshnkvn-vb:~$docker网络ls
网络ID名称驱动程序作用域
81001dac99c0本地桥
8e65fb4ef6f8主机本地
94ce4e1605ef无空本地
a3f48ac3facc OpenPoiseService_默认桥接器本地
e3d4286df013 OpenPoiseService_poi_网桥本地
已检查postgres启动日志:

kshnkvn@kshnkvn-vb:~$docker日志a66fe5691455
向pg_hba添加规则:0.0.0.0/0
将规则添加到pg_hba:replication replicator
设置主数据库
psql:无法连接到服务器:没有这样的文件或目录
服务器是否在本地运行并接受
Unix域套接字上的连接“/var/run/postgresql/.s.PGSQL.5432”?
2020-02-08 13:50:20.675 UTC[25]日志:侦听IPv4地址“127.0.0.1”,端口5432
2020-02-08 13:50:20.683 UTC[25]日志:在Unix套接字上侦听“/var/run/postgresql/.s.PGSQL.5432”
2020-02-08 13:50:20.756 UTC[37]日志:数据库系统中断;最后已知时间为2020-02-08 13:35:17 UTC
2020-02-08 13:50:21.830 UTC[48]postgres@postgres致命:数据库系统正在启动
psql:致命:数据库系统正在启动
2020-02-08 13:50:22.726 UTC[37]日志:数据库系统未正确关闭;正在进行自动恢复
2020-02-08 13:50:22.730UTC[37]日志:重做从0/21CCC50开始
2020-02-08 13:50:22.730 UTC[37]日志:0/21CCC88处的记录长度无效:需要24,得到0
2020-02-08 13:50:22.730UTC[37]日志:重做在0/21CCC50完成
2020-02-08 13:50:22.867 UTC[25]日志:数据库系统已准备好接受连接
数据库清单
姓名|所有者|编码|校对| Ctype |访问权限
-----------+-----------+----------+---------+---------+-----------------------
地理信息系统|地理信息系统管理| UTF8 | C.UTF-8 | C.UTF-8 |
博士后|博士后| UTF8 | C.UTF-8 | C.UTF-8 |
模板0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 |=C/postgres+
|| | | | postgres=CTc/postgres
模板1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 |=C/postgres+
|| | | | postgres=CTc/postgres
(4排)
博士后准备好了吗
设置postgres用户:密码
创建超级用户gis\u admin
变换角色
创建复制用户复制器
变换角色
gis数据库已经存在
数据库清单
姓名|所有者|编码|校对| Ctype |访问权限
-----------+-----------+----------+---------+---------+-----------------------
地理信息系统|地理信息系统管理| UTF8 | C.UTF-8 | C.UTF-8 |
博士后|博士后| UTF8 | C.UTF-8 | C.UTF-8 |
模板0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 |=C/postgres+
|| | | | postgres=CTc/postgres
模板1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 |=C/postgres+
|| | | | postgres=CTc/postgres
(4排)
2020-02-08 13:50:24.785 UTC[25]日志:收到智能关机请求
2020-02-08 13:50:24.799 UTC[25]日志:后台工作程序“逻辑复制启动器”(PID 58)已退出,退出代码为1
2020-02-08 13:50:24.801 UTC[53]日志:正在关闭
2020-02-08 13:50:24.838 UTC[25]日志:数据库系统已关闭
GRE后初始化过程已完成。。。。在前台重新启动
2020-02-08 13:50:25.842 UTC[148]日志:侦听IPv4地址“0.0.0.0”,端口5432
2020-02-08 13:50:25.842 UTC[148]日志:侦听IPv6地址:“,端口5432”
2020-02-08 13:50:25.850 UTC[148]日志:在Unix套接字上侦听“/var/run/postgresql/.s.PGSQL.5432”
2020-02-08 13:50:25.880 UTC[150]日志:数据库系统在2020-02-08 13:50:24 UTC关闭
2020-02-08 13:50:25.887 UTC[148]日志:数据库系统已准备好接受连接
看起来postgre是从ip 0.0.0.0开始的

我查看了docker
ip addr show
命令使用的ip。尝试使用此ip重新连接:

psql:无法连接到服务器:连接被拒绝
服务器是否在主机“172.17.0.1”上运行并接受
端口5432上的TCP/IP连接?
root@10fafbab73dc:/deploy/app#psql-h 172.17.255.255-U gis_admin-gis
psql:无法连接到服务器:连接超时
服务器是否在主机“172.17.255.255”上运行并接受
端口5432上的TCP/IP连接?
我能做什么
   ports:
     - "25432:25432"
version: '2.2'

volumes:
 postgis-data:

services:
 gunicorn_flask:
  #network_mode: "host"
  build: .
  volumes:
  - ./osm:/deploy/app/osm
  - ./ops_settings_docker.yml:/deploy/app/openpoiservice/server/ops_settings.yml
  - ./categories_docker.yml:/deploy/app/openpoiservice/server/categories/categories.yml
  ports:
   - "5000:5000"
  mem_limit: 28g
  networks:
   - poi_network

 # Don't forget to change the host name inside ops_settings_docker.yml by the one given to docker container.
 # Also port should be set to 5432 (default value) inside the same file since they are on the same network
 psql_postgis_db:
  image: kartoza/postgis:11.0-2.5
  volumes:
   - postgis-data:/var/lib/postgresql
  environment:
   # If you need to create multiple database you can add coma separated databases eg gis,data
   - POSTGRES_DB=gis
   - POSTGRES_USER=gis_admin    # Here it's important to keep the same name as the one configured inside ops_settings_docker.yml
   - POSTGRES_PASS=admin        # Here it's important to keep the same name as the one configured inside ops_settings_docker.yml
   - POSTGRES_DBNAME=gis        # Here it's important to keep the same name as the one configured inside ops_settings_docker.yml
   - ALLOW_IP_RANGE=0.0.0.0/0
  ports:
   - "25432:25432"
  restart: on-failure
  networks:
   - poi_network

networks:
 poi_network: