Skip to content

Aufgabe 09 - Installation einer lokalen PostgreSQL-Datenbank

Switch to Zen Mode

Aufgabe 09 - Installation einer lokalen PostgreSQL-Datenbank mit Docker

Abschnitt betitelt „Aufgabe 09 - Installation einer lokalen PostgreSQL-Datenbank mit Docker“

In dieser Übung richten Sie sich Ihre eigene Arbeitsumgebung ein: einen lokalen PostgreSQL-Server in Docker mit persistenten Daten. Diese Datenbank verwenden Sie in allen folgenden SQL-Übungen (siehe Kapitel 5 - SQL-Grundlagen).

In dieser Übung üben Sie:

  • Verstehen: die Rolle eines Datenbankservers gegenüber Datenbank-Clients (psql, GUI-Tools) erfassen.
  • Auswählen: einen geeigneten Unterbau (HTL-Live-Image oder eigenes Betriebssystem) wählen.
  • Konfigurieren: eine Docker-Umgebung mit Image, Container, Port-Mapping und Volumes einrichten.
  • Anwenden & Testen: den laufenden Server über psql oder ein GUI-Tool erreichen und prüfen.
  • Berücksichtigen: Sicherheitsaspekte (Passwörter, Standard-User, offene Ports) beachten.
  • Dokumentieren: die durchgeführten Schritte nachvollziehbar festhalten.

Ziel dieser Aufgabe ist, dass Sie am Ende über einen lauffähigen PostgreSQL-Server auf Ihrem eigenen Laptop verfügen, den Sie in späteren Übungen und Projekten verwenden können.

Die HTL Villach stellt ein vorkonfiguriertes HTL-Live-Image (als virtuelle Maschine) zur Verfügung, das Sie verwenden können, aber nicht müssen:

  1. Die Beschreibung des HTL-Live-Images finden Sie unter:
    https://insy.htl-villach.at/de/exercises/basic/exercise-a---installation-des-htl-live-image/
    Dieses Image kann als Basis für Ihre Entwicklungsumgebung dienen.

  2. Die grundsätzliche Vorgehensweise zur Installation von PostgreSQL oder MariaDB in einer Docker-Umgebung ist hier beschrieben:
    https://insy.htl-villach.at/de/exercises/basic/exercise-b---installation-von-postgresql-im-htl-live-image/

    Wichtig: In dieser Aufgabe sollen Sie PostgreSQL installieren, nicht MariaDB.

Sie entscheiden selbst, ob Sie

  • das HTL-Live-Image als VM verwenden und darin mit Docker arbeiten, oder
  • direkt auf Ihrem Laptop-Betriebssystem (Windows, macOS, Linux) Docker installieren und verwenden.

Das Endergebnis (laufender PostgreSQL-Server) soll in beiden Fällen gleich sein.

  1. Basis-System wählen und vorbereiten

  2. Docker-Umgebung bereitstellen

    • Falls Sie das HTL-Live-Image verwenden:
      • Führen Sie die notwendigen Schritte aus Übung B durch, um Docker im Live-Image zu verwenden (so weit, wie für PostgreSQL notwendig ist).
    • Falls Sie Ihr eigenes Betriebssystem verwenden:
      • Installieren Sie eine passende Docker-Umgebung (z. B. Docker Desktop, Docker Engine, Podman mit Docker-Kompatibilität o. Ä.).
    • Überprüfen Sie die Installation mit einem Testbefehl wie z. B.:
      • docker version
      • docker ps
  3. PostgreSQL-Container planen

    • Legen Sie fest:
      • Unter welchem Port PostgreSQL von außen erreichbar sein soll (z. B. Host-Port 5432 oder ein alternativer Port).
      • Wie der Datenordner der Datenbank als Volume eingebunden werden soll (damit Daten auch nach einem Container-Neustart erhalten bleiben).
      • Welche Benutzernamen, Passwörter und Datenbanknamen Sie verwenden (z. B. postgres-User, eigenes Datenbank-Schema für Tests).
    • Dokumentieren Sie diese Entscheidungen stichwortartig.
  4. PostgreSQL mit Docker starten

    • Erstellen Sie eine einfache docker run-Anweisung oder bevorzugt eine docker-compose.yml, mit der
      • ein PostgreSQL-Container aus einem offiziellen Image (z. B. postgres:latest) gestartet wird,
      • der Port des Containers auf einen Host-Port gemappt wird (z. B. 5432:5432),
      • ein Volume für die Daten eingebunden wird,
      • die notwendigen Umgebungsvariablen (z. B. POSTGRES_PASSWORD, optional POSTGRES_USER, POSTGRES_DB) gesetzt werden.
    • Starten Sie den Container:
      • z. B. mit docker compose up -d oder einem entsprechenden Befehl.
    • Stellen Sie sicher, dass der Container fehlerfrei läuft:
      • docker ps zeigt den Container als “healthy” oder zumindest “up” an,
      • im Log (docker logs <container-name>) sind keine kritischen Fehlermeldungen zu sehen.
  5. Verbindung zur Datenbank testen

    • Installieren bzw. verwenden Sie einen geeigneten PostgreSQL-Client:
      • Kommandozeile: psql, oder
      • optional ein GUI-Tool (z. B. DBeaver, pgAdmin, TablePlus, …).
    • Stellen Sie eine Verbindung zur Datenbank her:
      • Host: localhost (oder die IP der VM, falls Sie das HTL-Live-Image nutzen),
      • Port: der von Ihnen konfigurierte Port,
      • Benutzername und Passwort aus Schritt 3,
      • Datenbankname (z. B. postgres oder Ihre eigene Test-Datenbank).
    • Führen Sie mindestens folgende SQL-Befehle aus und notieren Sie sich das Ergebnis:
      • CREATE DATABASE testdb;
      • \c testdb
      • SELECT version();
      • CREATE TABLE test (id SERIAL PRIMARY KEY, name TEXT NOT NULL);
      • INSERT INTO test (name) VALUES ('Erster Eintrag');
      • SELECT * FROM test;
      • DROP DATABASE testdb;
  6. Dokumentation Ihrer Installation

    • Halten Sie die wichtigsten Schritte in einer kurzen Dokumentation fest:
      • Welche Variante (HTL-Live-Image oder natives OS) haben Sie verwendet?
      • Welche Docker-Befehle bzw. welche docker-compose.yml haben Sie genutzt?
      • Welche Zugangsdaten (Benutzer, Datenbankname, Port - ohne das Passwort im Klartext) haben Sie konfiguriert?
      • Welche Probleme sind aufgetreten und wie haben Sie diese gelöst?
    • Erstellen Sie Screenshots, die zeigen:
      • den laufenden PostgreSQL-Container in docker ps,
      • eine erfolgreiche Verbindung mit psql oder dem GUI-Tool,
      • das Ergebnis der Abfrage SELECT * FROM test;.
  • Dokumentation (Word oder PDF) mit:
    • einer kurzen Beschreibung der gewählten Umgebung (HTL-Live-Image oder natives Betriebssystem),
    • den wichtigsten Installationsschritten in Stichworten,
    • einer Übersicht über die gewählten Einstellungen (Port, Benutzer, Datenbankname),
    • einer kurzen Beschreibung Ihrer Probleme, die aufgetreten sind, und Ihrer Lösungen.
  • Screenshots:
    • ein Screenshot von docker ps, der den laufenden PostgreSQL-Container zeigt,
    • ein Screenshot einer erfolgreichen Verbindung zur Datenbank (psql oder GUI),
    • ein Screenshot der Ergebnisanzeige der Tabelle test (mit dem eingefügten Datensatz).

  • Frage 1: Worin unterscheidet sich ein Datenbankserver (PostgreSQL) von einem Datenbank-Client (z. B. psql)?
  • Frage 2: Wozu dient ein Volume beim Betrieb eines Datenbank-Containers, und was passiert ohne Volume nach einem Neustart?
  • Frage 3: Was bedeutet das Port-Mapping 5432:5432 in einem docker run- bzw. docker compose-Befehl?

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