sql >> Database >  >> RDS >> PostgreSQL

Docker gebruiken om web-app te starten, kan geen verbinding maken met Postgresql DB?

Waarom kan ik GEEN verbinding maken met localhost:5432?

Cat de /etc/hosts van uw container

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

Voor docker-netwerken is bridge standaard is de localhost inside verwijst naar de container zelf(Docker standaard bridge-netwerk ).Dan heb je geen 5432 luisteren in je container:

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

Oplossing 1. Als u de "localhost:5432" in uw config xml hard wilt coderen, is de eenvoudigste manier om uw container te maken met de optie "--net=host":

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

Oplossing 2. Wijzig de localhost van uw docker-host-ip in de container
  • Verkrijg uw docker-host-ip
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Voer uw container in:
    $ sudo docker exec -it [container] /bin/bash
  • Bewerk het bestand /etc/hosts om de localhost te verwijzen naar docker host ip :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Oplossing 3. Pas uw db-configuratiebestand aan om een ​​alias te gebruiken in plaats van localhost :

connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Voeg vervolgens de DB_ALIAS . toe naar de hosts van de container :
$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...


  1. Een berekende kolom maken in een SQL Server 2008-tabel

  2. MySQL sorteren op een lijst

  3. Hoe meerdere waarden in één kolom te retourneren (T-SQL)?

  4. MySQL samengestelde index wordt niet gebruikt