sql >> Databasteknik >  >> RDS >> PostgreSQL

Det gick inte att ansluta till postgres-servern i en docker från en dockad app

Använd bara användardefinierade bryggnätverk. Först, utnyttja dina kunskaper genom att läsa en kort förklaring av olika typer av nätverk i Docker:https://docs.docker.com/network/bridge/

För det andra, definiera ditt eget nätverk

docker network create foo

Kör sedan dina behållare anslutna till detta nätverk:

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

Observera i båda kommandona --network foo . Du behöver inte heller för att exponera portar i detta fall - i användardefinierade nätverk görs det automatiskt:

Behållare anslutna till samma användardefinierade bryggnätverk exponerar automatiskt alla portar för varandra, och inga portar för omvärlden. Detta gör att applikationer i containers kan kommunicera med varandra enkelt, utan att oavsiktligt öppna åtkomst till omvärlden.

För det tredje, ge dina behållare mänskliga läsbara värdnamn med --name bar

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

Och slutligen fixa anslutningssträngen - ändra från localhost till containernamn, som my-postgres :

...
POSTGRES_HOST=my-postgres
...


  1. Hur man formaterar siffror med ett minus/plus-tecken i Oracle

  2. Är SQLFiddle trasig? Fel för Oracle, SQL Server, ...?

  3. Hur kan jag välja från värdelistan i Oracle

  4. Rekursiv CTE sammanfogar fält med föräldrar från godtycklig punkt