# ===================================================================== # Aether Framework — Datenbank + Auto-Migration # # Startet eine MariaDB und spielt beim Hochfahren alle Schemas ein. # Bereits angewendete Migrationen werden über `schema_migrations` # erkannt und übersprungen — mehrfaches `up` ist gefahrlos. # # cp .env.example .env # Zugangsdaten anpassen # docker compose up -d # DB starten + migrieren # docker compose logs -f migrate # Migration mitlesen # # Adminer (Web-Oberfläche für die DB) optional dazu: # docker compose --profile tools up -d # ===================================================================== services: db: image: mariadb:11 container_name: aether-db restart: unless-stopped environment: MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-aether_root} MARIADB_DATABASE: ${DB_NAME:-aether} MARIADB_USER: ${DB_USER:-aether} MARIADB_PASSWORD: ${DB_PASSWORD:-aether} ports: - "${DB_PORT:-3306}:3306" volumes: - db_data:/var/lib/mysql healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 5s timeout: 5s retries: 30 # Läuft einmal pro `up`, wartet auf die DB und spielt die Migrationen ein. migrate: image: mariadb:11 container_name: aether-migrate depends_on: db: condition: service_healthy environment: DB_HOST: db DB_NAME: ${DB_NAME:-aether} DB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-aether_root} volumes: - ./sql:/sql:ro - ./docker/migrate.sh:/migrate.sh:ro entrypoint: ["sh", "/migrate.sh"] restart: "no" # Optional: schlanke Web-Oberfläche auf http://localhost:8080 adminer: image: adminer:4 container_name: aether-adminer restart: unless-stopped depends_on: db: condition: service_healthy ports: - "${ADMINER_PORT:-8080}:8080" environment: ADMINER_DEFAULT_SERVER: db profiles: ["tools"] volumes: db_data: