Het ziet eruit als
Uitleg:
PostgreSQL accepteert mogelijk niet alleen verbindingen via TCP/IP, maar ook via UNIX-socket. De
Als je kijkt naar de huidige docker-entrypoint.sh
versie zult u zien dat tijdens het uitvoeren van scripts in
Dit betekent dat
Maar waarom het uitvoeren van
Als je de
Dus wanneer het opstartproces is voltooid, kunt u verbinding maken met PostgreSQL met behulp van TCP-verbindingen, dus de container binnengaan en -h localhost
argument vertelt psql
om TCP-verbindingen te gebruiken in plaats van UNIX-socket./docker-entrypoint-initdb.d
PostgreSQL luistert alleen op de UNIX-socket en het opstartlogboek zegt:LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
psql -h localhost
zal geen verbinding maken met de database, omdat PostgreSQL niet luistert op de IP-socket. U moet psql
. gebruiken zonder -h localhost
optie om het UNIX-socket te laten gebruiken in plaats van TCP-verbindingen.psql -h localhost
handmatig werkt?docker-entrypoint.sh
. bekijkt nogmaals, je zult zien dat wanneer alle init-scripts zijn uitgevoerd, PostgreSQL wordt gestopt
en toen begon
opnieuw in de normale (operationele) modus, waarin het zowel op UNIX- als op IP-sockets luistert:LOG: listening on IPv4 address "0.0.0.0", port 5432
LOG: listening on IPv6 address "::", port 5432
LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
psql -h localhost
uitvoeren slaagt.