• Datenbanken

    Veröffentlicht: 14.11.2025 | Aktualisiert: 15.03.2026

    Der Betrieb von Datenbanksystemen ist heute so einfach wie noch nie zuvor, Betriebssystemcontainern wie Docker zum Dank.

    Während ich beruflich noch gelernt habe eine Oracle Datenbank in mühevollster Kleinstarbeit über Tage hin perfekt zu konfigurieren, fährt man heute noch nur noch den Container mit ein paar Standard Konfigurationsoptionen hoch.

    Relationale Datenbanken

    Die “Klassiker” der Datenbanken.

    Für den Betrieb brauchen wir neben dem Container als solches, ein Volume für den persistenten Speicher, Umgebungsvariablen und ein paar Konfigurationsoptionen.

    Obacht bei der Auswahl des Users unter dem der Datenbankcontainer laufen solle, da sich die Berechtigungen auf das persistente Volume durchziehen.

    MariaDB

    MariaDB ist ein Open-Source Projekt, das als Fork von MySQL entstanden ist und hat ebendieses weitestgehend verdrängt.

    Konfiguration

    Beispiel hier.

    compose.yml:

    mariadb:
      container_name: mariadb
      image: mariadb:10.11
      user: "1000:1000"
      restart: unless-stopped
      command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW --log_bin_trust_function_creators=true
      volumes:
        - ./db:/var/lib/mysql
      env-file:
          .env
      networks:
        - default
    

    .env

    MARIADB_ROOT_PASSWORD=
    MARIADB_DATABASE=
    MARIADB_USER=
    MARIADB_PASSWORD=
    TZ=Europe/Berlin
    PUID=1000
    PGID=1000
    

    Betrieb

    Datenbank sichern (Backup oder Dump)

    docker exec DBCONTAINERNAME sh -c 'exec mysqldump -u"root" -p"ROOTPASSWORD" "DBNAME"' > dump.sql
    

    Datenbank aus dump wiederherstellen (Restore)

    cat dump.sql | docker exec -i DBCONTAINERNAME sh -c 'exec mysql -u"root" -p"ROOTPASSWORD" "DBNAME"'
    

    PostgresSQL

    PSQL ist die in der Open-Source Gemeinde beliebteste Relationale Datenbank und in modernen Softwareprojekte in der Regel der Standard.

    compose.yml

    
    services:
      psqldb:
        container_name: psqldb
        image: postgres:15-alpine
        user: "1000:1000"
        environment:
        restart: unless-stopped
        volumes:
          - ./db:/var/lib/postgresql/data
        networks:
      default:
    

    .env

    POSTGRES_DB=
    POSTGRES_PASSWORD=
    POSTGRES_USER=
    PUID=1000
    PGID=1000
    TZ=Europe/Berlin