Konfigurieren von PostgreSQL
PostgreSQL wird üblicherweise in die Gesamtkonfiguration von SOLECTRUS integriert, d.h. die bestehenden Dateien compose.yaml
und .env
sind zu erweitern.
compose.yaml
services:
postgresql:
image: postgres:16-alpine
environment:
- TZ
- POSTGRES_PASSWORD
volumes:
- ${DB_VOLUME_PATH}:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test:
- CMD-SHELL
- pg_isready -U postgres
interval: 10s
timeout: 20s
retries: 5
start_period: 60s
logging:
options:
max-size: 10m
max-file: '3'
labels:
- com.centurylinklabs.watchtower.scope=solectrus
watchtower:
# ...
Es gibt im Normalfall keine Notwendigkeit, direkt auf die Datenbank zuzugreifen. Daher muss auch kein Port nach außen geöffnet werden. Der Zugriff erfolgt ausschließlich über den Dashboard-Container von SOLECTRUS.
PostgreSQL erscheint jährlich in einer neuen Major-Version. Ein Upgrade erfordert aber ein Backup/Restor. Da die Vorteile einer neuen Major-Version aus Sicht von SOLECTRUS überschaubar sind, kann problemlos bei einer älteren Version verblieben werden, für die es üblicherweise fünf Jahre lang Minor-Updates gibt.
Keineswegs darf bei Verfügbarkeit einer neuen Version von PostgreSQL einfach die neue Versionsnummer in die compose.yaml
eingetragen werden. PostgreSQL wird dann nicht mehr starten!
Neue Minor-Versionen von PostgreSQL können (und sollten auch) problemlos eingespielt werden, ohne dass ein Backup/Restore erforderlich ist. Darum kümmert sich idealerweise Watchtower.
Umgebungsvariablen
-
TZ
Zeitzone gemäß Liste
-
POSTGRES_PASSWORD
Passwort für den internen Benutzer
postgres
. Da die Datenbank nicht von außen erreichbar ist, ist das Passwort nicht sonderlich kritisch, es muss aber auf einen Wert gesetzt werden.Wird beim ersten Start gesetzt und darf danach nicht mehr geändert werden!
-
DB_VOLUME_PATH
Pfad, in dem die Datenbank gespeichert wird. Dieser Pfad wird als Volume in den Container gemountet.
Wenn am angegebenen Pfad bereits eine Datenbank existiert, wird diese verwendet. Andernfalls wird eine neue Datenbank angelegt. Dies ist normalerweise nur beim ersten Start des Containers der Fall.
Beispielhafte .env
TZ=Europe/Berlin
POSTGRES_PASSWORD=geheimes-datenbank-passwort
DB_VOLUME_PATH=/somewhere/solectrus/postgresql