services: nginx: image: nginx:1.27-alpine ports: # Lokal erreichbar unter http://localhost:8000 - "8000:80" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro - ./public:/var/www/html/public:ro depends_on: - php restart: unless-stopped php: build: . volumes: - ./public:/var/www/html/public - ./src:/var/www/html/src - ./migrations:/var/www/html/migrations - ./scripts:/var/www/html/scripts - ./tests:/var/www/html/tests # Persistente Nutzdaten außerhalb des Web-Roots. data/mariadb wird hier # bewusst NICHT gemountet – das gehört allein dem db-Container. - ./data/logs:/var/www/html/data/logs - ./data/import:/var/www/html/data/import environment: TZ: Europe/Berlin DB_HOST: db DB_NAME: finanzmanager DB_USER: finanzmanager DB_PASS: ${DB_PASS:-finanzmanager} APP_KEY: ${APP_KEY:-} DEBUG_LOG: ${DEBUG_LOG:-0} depends_on: db: condition: service_healthy restart: unless-stopped db: image: mariadb:11 environment: TZ: Europe/Berlin MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASS:-rootpass} MARIADB_DATABASE: finanzmanager MARIADB_USER: finanzmanager MARIADB_PASSWORD: ${DB_PASS:-finanzmanager} volumes: - ./data/mariadb:/var/lib/mysql healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 5s timeout: 5s retries: 10 restart: unless-stopped