sql >> Databáze >  >> RDS >> PostgreSQL

Pomocí Dockeru ke spuštění webové aplikace se nemůžete připojit k Postgresql DB?

Proč se NEMOHU připojit k localhost:5432?

Označte /etc/hosts svého kontejneru

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

Pro docker sítě je bridge ve výchozím nastavení localhost uvnitř ukazuje na samotný kontejner (Výchozí síť mostu Docker ).Pak nemáte 5432 poslech ve vašem kontejneru:

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

Řešení 1. Pokud chcete napevno zakódovat "localhost:5432" v konfiguračním xml, nejjednodušším způsobem je vytvoření kontejneru s možností "--net=host":

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

Řešení 2. Změňte localhost vaší hostitelské IP adresy dockeru v kontejneru
  • Získejte IP hostitele dockeru
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Zadejte svůj kontejner:
    $ sudo docker exec -it [container] /bin/bash
  • Upravte soubor /etc/hosts k nasměrování localhost na IP hostitele docker :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Řešení 3. Upravte svůj konfigurační soubor db tak, aby používal alias místo localhost :

connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Poté přidejte DB_ALIAS k hostitelům kontejneru :
$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...


  1. Jak napsat objednávku LaravelNa dotaz?

  2. mysql union ve výsledku špatné sloupce

  3. Implementace hierarchické datové struktury v databázi

  4. Jak mohu provést tento dotaz v SQL Server Compact Edition?