1. Docker Compose

Zusammenfassung von Docker Compose Lecture Notes.

1.1. Was bisher geschah (Entwicklung)

  • Architektur:

    • Früher: Mehrere Dienste pro Betriebssystem installiert.

    • → Neu: Ein Dienst (Service) pro Container.

  • Netzwerk:

    • Früher: Manuelles Erstellen von Netzwerken (docker network create) und Einbinden von Containern (--network).

    • → Neu: Verwendung von docker-compose (oder Kubernetes) zur Orchestrierung von Multi-Container-Applikationen.

1.2. Überblick

  • docker-compose dient der Orchestrierung mehrerer Container.

    • Orchestrierung bezeichnet die automatisierte Konfiguration, Koordination und Verwaltung von Computersystemen und Software.

    • Im Kontext von Docker bedeutet das: Verwaltung von Containern, deren Netzwerke, Volumes und Startreihenfolge.

  • Container laufen in einem gemeinsamen virtuellen Docker-Netzwerk.

  • Direkter Zugriff zwischen Containern ohne Port-Freigabe nach außen möglich.

1.3. Konfiguration

  • Die Konfiguration erfolgt über eine YAML-File: docker-compose.yml.

  • Starten der Umgebung: docker-compose up -d

    • -d: Detached mode (läuft im Hintergrund).

Beispiel docker-compose.yml (Minecraft Server)
version: '3.8'

services:
  mc:
    image: itzg/minecraft-server
    ports:
      - 25565:25565
    environment:
      EULA: "TRUE"
    volumes:
      - ./minecraft-data:/data

2. Pflichtenheft ("Was mache ich")

Das Pflichtenheft beschreibt genau, was umgesetzt werden soll.

2.1. Ausgangssituation

Wer ist der Kunde? Was macht er?
Beispiel: Die HTL Leonding ist eine HTL im oö. Zentralraum mit ca. 1000 Schülern und den Fachabteilungen Medientechnik, Informatik, …

2.2. Istzustand

Wie läuft es aktuell ab (bevor es die neue Software gibt)? Beschreibung der speziellen Situation z.B. in der Abteilung.

2.3. Problemstellung

Was funktioniert aktuell schlecht? Was fehlt?

2.4. Aufgabenstellung

Wie soll die Lösung ("Sollzustand") aussehen?

2.4.1. Funktionale Anforderungen

Was muss die Software konkret machen können (Features)?

2.4.2. Nichtfunktionale Anforderungen (NFA)

z.B. Sicherheit.

2.5. Ziele

Was will man durch das Projekt erreichen? (z.B. Arbeitszeit sparen).

2.6. Mengengerüst

Was ist ein Mengengerüst?
Das Mengengerüst ist eine Abschätzung der Datenmengen und Benutzerzahlen. Man überlegt sich: * Wie viele Nutzer greifen gleichzeitig zu? * Wie viele Daten werden pro Tag/Jahr gespeichert? * Wie viel Speicherplatz wird benötigt?

Das ist wichtig, um zu wissen, wie stark der Server sein muss.

2.7. Rahmenbedingungen

Vorgaben vom Auftraggeber, an die man sich halten muss (z.B. bestimmte Programmiersprache, Hardware, Deadlines).

120511 2246 NormenBashi1