Zum Inhalt springen

Aufgabe B - Installation von PostgreSQL oder MariaDB im HTL Live Image

Zu Zen-Modus wechseln
  • Docker & Docker Compose im HTL Villach Debian Live Image
  • PostgreSQL + pgAdmin als Container-Services
  • Persistente Datenhaltung über named volumes
  • Fehlersuche & Best Practices

Ein Container kapselt PostgreSQL inklusive Version, Abhängigkeiten und Konfiguration. So läuft die Datenbank auf jedem Rechner identisch, startet in Sekunden und kann rückstandsfrei entfernt oder aktualisiert werden. Named Volumes sorgen dafür, dass Daten unabhängig vom Container persistent bleiben. Mit Docker Compose wird die Umgebung deklarativ beschrieben (Services, Netzwerk, Ports, Variablen, Volumes) und mit einem Befehl (docker compose up -d) reproduzierbar gestartet – besser nachvollziehbar und versionskontrollierbar als einzelne docker run-Kommandos.

Im HTL Villach Debian Live Image sind Tools und Defaults einheitlich; mit eingerichtetem persistentem Speicher bleibt auch /var/lib/docker erhalten. Das ermöglicht faire, reproduzierbare Übungen/Prüfungen und bei Problemen einen schnellen Reset durch Neustart oder Neuaufsetzen der Compose-Services – ohne Neuinstallation.


Operator: Konstruieren

Voraussetzungen: Im Live-Image ist Docker bereits installiert. Prüfen Sie: docker --version docker compose version

  1. Arbeitsverzeichnis anlegen
Terminal-Fenster
mkdir -p ~/rdbms && cd ~/rdbms
  1. docker-compose.yml erstellen

Hinweis: Ändern Sie alle Standard-Passwörter/Benutzer auf sichere Werte.

services:
postgres:
image: postgres:17
container_name: postgres
restart: unless-stopped
environment:
# Change this!
- POSTGRES_USER=pgadmin
- POSTGRES_PASSWORD=postgres-root-password
networks:
- rdbms
ports:
- "5432:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4:9.8
container_name: pgadmin
restart: unless-stopped
environment:
- PGADMIN_DEFAULT_PASSWORD=s3cret
networks:
- rdbms
ports:
- "3081:80"
- "3443:443"
volumes:
- pgadmin-data:/var/lib/pgadmin
networks:
rdbms:
volumes:
postgres-etc:
postgres-data:
pgadmin-data:

Optional (empfohlen): Nutzen Sie eine .env-Datei und ersetzen Sie die Werte im YAML durch ${VARIABLE}. Beispiel: ${POSTGRES_USER}, ${POSTGRES_PASSWORD}, ${PGADMIN_DEFAULT_EMAIL}, ${PGADMIN_DEFAULT_PASSWORD}.

  1. Services starten
Terminal-Fenster
docker compose up -d
  1. Logs prüfen
Terminal-Fenster
docker compose logs -f postgres
  1. Verbindung testen (psql)
Terminal-Fenster
docker exec -it postgres psql -U pgadmin
  1. pgAdmin aufrufen
  • Browser: http://localhost:3081

  • Login mit den in Compose gesetzten PGADMIN_DEFAULT_…-Werten.

  • In pgAdmin neuen Server anlegen:

    • Name: Postgres
    • Host: postgres
    • Port: 5432
    • Benutzer/Passwort: wie in Compose gesetzt.

Hinweis: Der Hostname postgres funktioniert innerhalb des Compose-Netzwerks rdbms. Vom Host aus verwenden Sie 127.0.0.1:5432.


Operator: Bewerten

Bewerten Sie die folgenden Szenarien: Nennen Sie jeweils wahrscheinliche Ursache und konkrete Abhilfe/Verbesserung.

  1. postgres startet in einer Schleife neu

    • Ursache: ungültige/wechselnde Credentials, beschädigtes Datenverzeichnis, Port-Konflikt mit lokalem Postgres.
    • Abhilfe: Logs prüfen, Ports anpassen (z.B. 55432:5432), postgres-data-Volume leeren/neu initialisieren (Achtung Datenverlust!).
  2. pgAdmin kann nicht verbinden

    • Ursache: falscher Host (localhost statt postgres in pgAdmin), falscher Benutzer/Passwort, Netzwerk rdbms fehlt.
    • Abhilfe: Hostname postgres verwenden, Credentials prüfen, docker compose down && docker compose up -d (Netzwerk wird neu erstellt).
  3. Performance-Probleme

    • Ursache: zu wenig RAM/CPU der VM, viele gleichzeitige Container, I/O auf dynamisch wachsenden VDI.
    • Abhilfe: VM-Ressourcen erhöhen (z.B. 8GiB RAM, 4 Cores), Volumes aufräumen, Datenbank-Settings prüfen.
  4. Verbesserungsvorschläge für das Compose-File

    • Healthcheck ergänzen (z.B. pg_isready -U $${POSTGRES_USER}).
    • TZ setzen (z.B. - TZ=Europe/Vienna).

Diese Übung ist eine Arbeitsunterlage; es ist keine Abgabe vorgesehen. Dokumentation/Screenshots dienen Ihrer eigenen Nachvollziehbarkeit.


HTL Villach, 2025–2026,
https://www.htl-villach.at