我在官方镜像上创建了一个postgres docker镜像,将我自己的pg_hba.conf
复制到其中,因为我需要禁用IPv6侦听:
FROM postgres:13
COPY pg_hba.conf /etc/
之后,我使用以下docker-compose.yaml运行容器:
postgres:
image: custom-postgres
command: postgres -c hba_file="/etc/pg_hba.conf"
但是postgres仍然尝试侦听不存在的IPv6套接字。我做错了什么?这是我的pg_hba.conf
:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
但我得到的感觉是,它没有被使用,因为我可以看到,默认的pg_hba.conf
仍然创建在/var/lib/postgresql/data
如果你想设置Postgres服务器监听的接口,你需要在postgresql.conf
中使用listen_addresses。要限制IPv4,请设置为0.0.0.0
。有关更多选项,请参阅文档链接。pg_hba.conf
用于控制客户端对服务器的访问。它不控制服务器监听哪个接口。