sql >> Database teknologi >  >> RDS >> PostgreSQL

Bruger du Docker til at starte webapp, kan du ikke oprette forbindelse til Postgresql DB?

Hvorfor kan jeg IKKE oprette forbindelse til localhost:5432?

Cat din containers /etc/hosts

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

For docker-netværk er bridge som standard er localhost indersiden peger på selve containeren(Docker standardbro-netværk ).Så har du ikke 5432 lytter i din container:

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

Løsning 1. Hvis du vil fastkode "localhost:5432" i din config xml, er den nemmeste måde at oprette din container med muligheden "--net=host":

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

Løsning 2. Skift localhost af din docker-værts-ip inde i containeren
  • Få din docker-værts-ip
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Indtast din container:
    $ sudo docker exec -it [container] /bin/bash
  • Rediger filen /etc/hosts at pege den lokale vært til docker-værts-ip :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Løsning 3. Rediger din db-konfigurationsfil til at bruge et alias i stedet for localhost :

connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Tilføj derefter DB_ALIAS til containerens værter :
$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...


  1. PHP salt og hash SHA256 til login-adgangskode

  2. Vende en streng ved hjælp af et indeks i Oracle

  3. Hvordan opretter jeg forbindelse til en SQL Server 2008-database ved hjælp af JDBC?

  4. Laravel 5.4 på PHP 7.0:PDO-undtagelse - Kunne ikke finde driver (MySQL)