services: mariadb: image: mariadb:11 container_name: annas_mariadb restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: annas_rechnungen MYSQL_USER: annas_user MYSQL_PASSWORD: annas_password volumes: - mariadb_data:/var/lib/mysql networks: - app_network healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] start_period: 10s interval: 5s timeout: 5s retries: 5 app: image: annasrechnungsmanager:latest container_name: annas_app restart: unless-stopped ports: - "3000:3000" environment: DATABASE_URL: mysql://annas_user:annas_password@mariadb:3306/annas_rechnungen AUTH_SECRET: ${AUTH_SECRET} NODE_ENV: production # Beim ersten Start: Admin-Benutzer (username: admin) anlegen oder Passwort setzen. # Danach kann diese Variable entfernt werden. ADMIN_PASSWORD: ${ADMIN_PASSWORD:admin} depends_on: mariadb: condition: service_healthy networks: - app_network command: > sh -c " npx prisma migrate deploy && if [ -n \"$ADMIN_PASSWORD\" ]; then echo 'ADMIN_PASSWORD gesetzt – Admin-Benutzer wird eingerichtet...' && node scripts/setup-admin.js; fi && npm run start " volumes: mariadb_data: networks: app_network: driver: bridge