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

Kunne ikke oprette forbindelse til postgres-serveren i en docker fra en dockeriseret app

Bare gør brug af brugerdefinerede bridge-netværk. Udnyt først din viden ved at læse en kort forklaring af forskellige typer netværk i Docker:https://docs.docker.com/network/bridge/

For det andet skal du definere dit eget netværk

docker network create foo

Kør derefter dine containere forbundne til dette netværk:

docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...

Bemærk i begge kommandoer --network foo . Du behøver heller ikke at afsløre porte i dette tilfælde - inde i brugerdefinerede netværk sker det automatisk:

Containere, der er forbundet til det samme brugerdefinerede bridge-netværk, udsætter automatisk alle porte for hinanden og ingen porte for omverdenen. Dette giver containeriserede applikationer mulighed for nemt at kommunikere med hinanden uden ved et uheld at åbne adgang til omverdenen.

For det tredje, giv dine containere læselige værtsnavne med --name bar

docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...

Og fix til sidst forbindelsesstrengen - skift fra localhost til containernavn, såsom my-postgres :

...
POSTGRES_HOST=my-postgres
...


  1. Få den mest almindelige værdi for hver værdi i en anden kolonne i SQL

  2. Brug af COALESCE til at håndtere NULL-værdier i PostgreSQL

  3. Sikre filer til download

  4. Forskellen mellem flydende og decimal datatype