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).
댓글이 없습니다.