version: '3.8' services: frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "3000:3000" environment: - REACT_APP_API_URL=http://localhost:5000 volumes: - ./frontend:/app - /app/node_modules depends_on: - backend backend: build: context: ./backend dockerfile: Dockerfile ports: - "5000:5000" environment: - NODE_ENV=development - DB_HOST=db - DB_PORT=5432 - DB_NAME=turftracker - DB_USER=turftracker - DB_PASSWORD=password123 - JWT_SECRET=your-super-secret-jwt-key - AUTHENTIK_CLIENT_ID=${AUTHENTIK_CLIENT_ID:-} - AUTHENTIK_CLIENT_SECRET=${AUTHENTIK_CLIENT_SECRET:-} - AUTHENTIK_BASE_URL=${AUTHENTIK_BASE_URL:-} - AUTHENTIK_CALLBACK_URL=${AUTHENTIK_CALLBACK_URL:-} - WEATHER_API_KEY=${WEATHER_API_KEY:-} volumes: - ./backend:/app - /app/node_modules depends_on: - db db: image: postgres:15-alpine environment: - POSTGRES_USER=turftracker - POSTGRES_PASSWORD=password123 - POSTGRES_DB=turftracker ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql nginx: image: nginx:alpine ports: - "80:80" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf depends_on: - frontend - backend volumes: postgres_data: