services: db: image: mariadb:11.4 container_name: einkaufsapp_db environment: MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:?bitte in .env setzen} MARIADB_DATABASE: ${DB_NAME:?bitte in .env setzen} MARIADB_USER: ${DB_USER:?bitte in .env setzen} MARIADB_PASSWORD: ${DB_PASSWORD:?bitte in .env setzen} command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci volumes: - db_data:/var/lib/mysql healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 5s timeout: 5s retries: 20 start_period: 30s restart: unless-stopped networks: [einkaufsapp] api: build: ./backend container_name: einkaufsapp_api env_file: .env environment: DB_HOST: db DB_PORT: "3306" # KEIN ports:-Eintrag. Die API ist ausschliesslich ueber den # web-Container erreichbar. Wer sie direkt braucht, nutzt # docker compose exec oder bindet testweise an 127.0.0.1 (s. README). expose: - "8000" depends_on: db: condition: service_healthy volumes: - ./backend:/app restart: "no" networks: [einkaufsapp] web: build: ./web container_name: einkaufsapp_web ports: - "${HTTP_PORT:?bitte in .env setzen}:8080" depends_on: - api restart: unless-stopped networks: [einkaufsapp] # Nur fuer die Entwicklung: faengt allen ausgehenden SMTP-Verkehr ab. # Aktivieren mit: docker compose --profile dev up -d mailpit: image: axllent/mailpit:v1.21 container_name: einkaufsapp_mailpit profiles: [dev] ports: - "127.0.0.1:${MAILPIT_PORT:-8025}:8025" restart: unless-stopped networks: [einkaufsapp] volumes: db_data: networks: einkaufsapp: name: einkaufsapp