Konfiguration von PostgreSQL
PostgreSQL läuft im offiziellen Docker-Image. Die Variablen sind also die des Images, eigenen Code bringt SOLECTRUS hier nicht mit. Der Container ist nur im Docker-Netzwerk erreichbar, von außen führt kein Weg zur Datenbank.
Umgebungsvariablen
Abschnitt betitelt „Umgebungsvariablen“POSTGRES_PASSWORD
Abschnitt betitelt „POSTGRES_PASSWORD“Passwort des Datenbank-Benutzers. Ohne Wert bricht PostgreSQL beim ersten Start mit einer Fehlermeldung ab. Das Dashboard und der Power-Splitter melden sich damit an, bei ihnen heißt die Variable DB_PASSWORD. Die Werte müssen übereinstimmen.
PostgreSQL legt das Passwort beim ersten Start in seinem Datenverzeichnis ab. Ein späterer Wechsel in der Konfiguration ändert es dort nicht: Die Datenbank bleibt beim alten Passwort, das Dashboard versucht es mit dem neuen, und die Anmeldung schlägt fehl.
POSTGRES_PASSWORD=my-secret-db-passwordPOSTGRES_USER
Abschnitt betitelt „POSTGRES_USER“Benutzer, den PostgreSQL beim ersten Start anlegt. Standardwert ist postgres. Er ist zugleich Superuser der Datenbank.
Der Name muss zu dem passen, mit dem sich das Dashboard anmeldet (DB_USER). Ein abweichender Wert lässt beide auseinanderlaufen, denn der Benutzer aus DB_USER existiert dann nicht. Auch der Healthcheck des Containers fragt mit pg_isready -U postgres nach.
POSTGRES_USER=postgresPOSTGRES_DB
Abschnitt betitelt „POSTGRES_DB“Datenbank, die PostgreSQL beim ersten Start anlegt. Standardwert ist der Name aus POSTGRES_USER, also postgres.
Mit dieser Datenbank arbeitet das Dashboard allerdings nicht. Es legt bei seinem ersten Start eine eigene an, solectrus_production, und die ist von POSTGRES_DB unabhängig. Ein anderer Wert benennt sie also nicht um, er entscheidet nur darüber, welche leere Datenbank daneben liegt.
POSTGRES_DB=solectrusVerzeichnis im Container, in dem PostgreSQL seine Dateien ablegt. Ohne die Variable gilt der Standardpfad von PostgreSQL, und der hängt von der Major-Version ab: postgres:17 und älter legen die Daten in /var/lib/postgresql/data ab, postgres:18 in /var/lib/postgresql/18/docker.
Der Pfad muss innerhalb des Volumes liegen, das DB_VOLUME_PATH in den Container mountet. Zeigt er woandershin, schreibt PostgreSQL in das Dateisystem des Containers. Die Datenbank ist dann verloren, sobald der Container neu erzeugt wird.
PGDATA=/var/lib/postgresql/data/pgdataDB_VOLUME_PATH
Abschnitt betitelt „DB_VOLUME_PATH“Pfad, in dem die Datenbank gespeichert wird. Er geht nicht an PostgreSQL selbst, sondern an Docker, das ihn als Volume in den Container mountet. Er sollte auf einem Datenträger mit ausreichend Speicherplatz liegen.
Was hier steht, entscheidet über alles Weitere: Liegt am Pfad schon eine Datenbank, startet PostgreSQL mit dieser weiter. Ist das Verzeichnis leer, legt PostgreSQL eine neue an. Nur dann greifen POSTGRES_PASSWORD, POSTGRES_USER und POSTGRES_DB. Bei jedem weiteren Start ignoriert PostgreSQL sie.
DB_VOLUME_PATH=/somewhere/solectrus/postgresqlZeitzone gemäß Liste. Standardwert ist UTC.
Sie betrifft ausschließlich die Zeitstempel im Protokoll des Containers. Die gespeicherten Daten liegen in UTC, daran ändert TZ nichts.
TZ=Europe/Berlin