sql >> Databasteknik >  >> RDS >> PostgreSQL

Använder du Docker för att starta webbapp, kan du inte ansluta till Postgresql DB?

Varför kan jag INTE ansluta till localhost:5432?

Kata din behållares /etc/hosts

$ sudo docker exec -it [container] cat /etc/hosts

För dockningsnätverk är bridge som standard är localhost insidan pekar på själva behållaren(Docker standardbryggnätverk ). Då har du inte 5432 lyssnar i din behållare:

$ sudo docker exec [container] nc -v -z localhost 5432

Lösning 1. Om du vill hårdkoda "localhost:5432" i din config xml, är det enklaste sättet att skapa din behållare med alternativet "--net=host":

$ sudo docker run --net=host -it ...

Lösning 2. Ändra localhost av din dockar-värd-ip inuti behållaren
  • Hämta din docker-värd-ip
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Ange din behållare:
    $ sudo docker exec -it [container] /bin/bash
  • Redigera filen /etc/hosts för att peka den lokala värden till docker-värdens ip :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Lösning 3. Ändra din db-konfigurationsfil så att den använder ett alias istället för localhost :

connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Lägg sedan till DB_ALIAS till behållarens värdar :
$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...


  1. Lagrad procedur för att få indexstatus i alla databaser

  2. Snyggt problem när du använder PostgreSQL

  3. MySQL:är en SELECT-sats skiftlägeskänslig?

  4. Stöder MySql sp_getapplock