sql >> Database >  >> RDS >> PostgreSQL

Kan geen verbinding maken met de postgres-server in een docker vanuit een gedockte app

Maak gewoon gebruik van door de gebruiker gedefinieerde bridge-netwerken. Maak eerst gebruik van uw kennis door een korte uitleg te lezen over verschillende soorten netwerken in Docker:https://docs.docker.com/network/bridge/

Ten tweede, definieer uw eigen netwerk

docker network create foo

Voer vervolgens uw containers uit verbonden naar dit netwerk:

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

Let op in beide commando's --network foo . Ook heb je niet nodig om poorten in dit geval vrij te geven - binnen door de gebruiker gedefinieerde netwerken wordt dit automatisch gedaan:

Containers die zijn aangesloten op hetzelfde door de gebruiker gedefinieerde bridge-netwerk, stellen automatisch alle poorten aan elkaar bloot en geen poorten aan de buitenwereld. Hierdoor kunnen gecontaineriseerde applicaties gemakkelijk met elkaar communiceren, zonder per ongeluk toegang tot de buitenwereld te openen.

Ten derde, geef uw containers door mensen leesbare hostnamen met --name bar

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

En tot slot de verbindingsreeks repareren - verander van localhost naar containernaam, zoals my-postgres :

...
POSTGRES_HOST=my-postgres
...


  1. Hoe parallelle plannen opstarten - deel 1

  2. Fout in MySQL bij het instellen van de standaardwaarde voor DATE of DATETIME

  3. MySQL:Meerdere rijen als door komma's gescheiden enkele rij

  4. Hoe specificeer je de IN-component in een dynamische query met behulp van een variabele?