Docker postgres镜像:对于主机没有pg_hba.conf条目

5
我有一个包含安装了Postgres的Docker镜像,在尝试运行它时出现以下错误信息:

db | 2018-11-27 08:29:28.849 UTC [2808] FATAL: no pg_hba.conf entry for host "172.x.x.x", user "postgres", database "postgres", SSL off

我尝试了以下操作:
  • 更改IP并使用当前主机的IP
  • 在设置Postgres时,输入:echo -e "host all all 0.0.0.0/0 trust"
但是这些都没有起作用。

1
你能发一下你的 Dockerfile 吗? - mbuechmann
1个回答

9

我遇到了相同的问题,即我的应用程序容器无法与我的postgres容器通信。我通过以下三个步骤解决了这个问题:

  1. 为Docker网络定义网络IP地址范围
# +----------------------+
# |  docker-compose.yml  |
# +----------------------+
networks:
  my_docker_network:
    driver: bridge
    ipam:
      config:
        - subnet: 10.5.0.0/16
  1. 在Postgres的pg_hba.conf文件中将相同的网络IP地址范围列入白名单
# +---------------+
# |  pg_hba.conf  |
# +---------------+
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             10.5.0.0/16             trust

我使用了trust来避免认证问题,但是你也可以指定md5cert或任何其他有效的认证方法。

  1. 在postgresql.conf文件中允许postgres监听外部主机
# +-------------------+
# |  postgresql.conf  |
# +-------------------+
# - Connection Settings -
listen_addresses = '*'          # what IP address(es) to listen on;

2
你为什么要手动修改Docker配置文件???为什么不在容器启动时传递命令或环境变量以自动化更改??? - uberrebu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接