version: '3.8' services: # Frontend (Next.js) frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "3000:3000" environment: - NEXT_PUBLIC_API_URL=http://backend:3001 depends_on: - backend restart: unless-stopped # Backend (Express API) backend: build: context: ./backend dockerfile: Dockerfile ports: - "3001:3001" environment: - NODE_ENV=production - PORT=3001 - DATABASE_URL=postgresql://vaultix:vaultix@postgres:5432/vaultix - REDIS_URL=redis://redis:6379 - JWT_SECRET=${JWT_SECRET:-your-secret-key-change-in-production} - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID} - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET} - GOOGLE_REDIRECT_URI=http://localhost:3001/api/auth/callback/google depends_on: - postgres - redis restart: unless-stopped # PostgreSQL Database postgres: image: postgres:15-alpine environment: - POSTGRES_USER=vaultix - POSTGRES_PASSWORD=vaultix - POSTGRES_DB=vaultix volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped # Redis (for job queue) redis: image: redis:7-alpine volumes: - redis_data:/data restart: unless-stopped volumes: postgres_data: redis_data: