# Produktions-Setup für den Serverbetrieb. # Starten mit: docker compose -f docker-compose.prod.yml up -d --build # # Benötigt eine .env-Datei (siehe .env.example) mit: # MONGO_ROOT_USER, MONGO_ROOT_PASSWD und optional FRONTEND_PORT. services: mongodb: image: mongo:latest container_name: mongodb restart: unless-stopped # Kein Host-Port: MongoDB ist nur im internen Docker-Netz erreichbar environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWD} volumes: - mongodb_data:/data/db - mongodb_config:/data/configdb networks: - app-network backend: build: context: ./backend dockerfile: Dockerfile.prod container_name: backend restart: unless-stopped # Kein Host-Port: Das Backend wird nur intern über nginx (Frontend) angesprochen environment: - PORT=3001 - NODE_ENV=production - MONGO_URI=mongodb://${MONGO_ROOT_USER}:${MONGO_ROOT_PASSWD}@mongodb:27017/appointmentsdb?authSource=admin # Frontend läuft über denselben Host (nginx-Proxy) -> kein Cross-Origin nötig. # Bei Bedarf hier die öffentliche Frontend-URL eintragen. - CORS_ORIGIN=${CORS_ORIGIN:-http://localhost:5173} depends_on: - mongodb networks: - app-network frontend: build: context: ./frontend dockerfile: Dockerfile.prod container_name: frontend restart: unless-stopped ports: - "${FRONTEND_PORT:-80}:80" depends_on: - backend networks: - app-network volumes: mongodb_data: mongodb_config: networks: app-network: driver: bridge