Wanneer u een PostgreSQL-container beheert met Docker Compose, is de configuratie van omgevingsvariabelen van cruciaal belang voor de initiële werking en herstartmethoden van de container. Vooral de toepassingstijd van elke variabele varieert afhankelijk van de aanwezigheid van een datavolume, waardoor het essentieel is om dit goed te begrijpen voor een veilige werking.


1. Vereiste omgevingsvariabele: POSTGRES_PASSWORD



Wanneer u de PostgreSQL-container uitvoert als een Docker-image, is POSTGRES_PASSWORD de enige vereiste omgevingsvariabele die altijd moet worden ingesteld, ongeacht de status van het datavolume.

Variabele naam Rol Toepassingstijd Actie bij verwijdering
POSTGRES_PASSWORD Wachtwoord voor superuser instellen Altijd nodig (bij initiële configuratie en containerstartproces) Container start mislukt (beveiligingsfout)

Kern: Deze variabele is een beveiligingseis om de container te starten en moet zelfs als de gegevens al bestaan, worden vermeld in het docker-compose.yml bestand.


2. Initiële instellingen: begrip van de toepassingstijd

POSTGRES_USER en POSTGRES_DB zijn omgevingsvariabelen die alleen van toepassing zijn wanneer het databasecluster voor de eerste keer wordt aangemaakt (wanneer het datavolume leeg is).

Variabele naam Rol Toepassingstijd Impact van wijzigingen bij herstart
POSTGRES_USER Naam van de initiële superuser instellen Alleen wanneer volume leeg is Genegeerd (bestaande gebruiker behouden)
POSTGRES_DB Naam voor initiële database maken Alleen wanneer volume leeg is Genegeerd (bestaande DB behouden)

📌 Werking bij herstart

Als u een container herstart met een al bestaand datavolume door het uitvoeren van docker-compose up -d, slaat de PostgreSQL-image het initiële proces (initdb) over en laadt de bestaande gegevens.

Daarom, zelfs als u andere instellingen zoals de containernaam of logging-methodes wijzigt en opnieuw opstart, POSTGRES_USER of POSTGRES_DB aanpast, veranderen de gebruikers of namen van de al bestaande databases niet.


3. Voorbeeld van Docker Compose



Hier is een beknopt docker-compose.yml voorbeeld dat de vereiste en aanbevolen variabelen omvat.

services:
  db:
    image: postgres:latest
    restart: always
    container_name: my_postgres_db  # Container naam (kan worden gewijzigd)
    logging:
      driver: "json-file"          # Logging methode (kan worden gewijzigd)
    environment:
      # ⚠️ Vereiste variabele: moet worden opgenomen.
      POSTGRES_PASSWORD: your_secure_password 

      # Initiële instellingen: alleen van toepassing wanneer volume leeg is.
      POSTGRES_USER: devuser
      POSTGRES_DB: main_app_db
    ports:
      - "5432:5432"
    volumes:
      # Volume voor permanente opslag van gegevens
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

✨ Tips voor beheer: veilige wijziging van instellingen

Gebruik het volgende commando om de container opnieuw op te starten met behoud van bestaande gegevens na het wijzigen van de containernaam, logging-instellingen, enz.

docker-compose up -d

Let op: Wees absoluut voorzichtig met het gebruik van het commando om volumes met gegevens te verwijderen (docker-compose down -v).