version: '3.8' services: app: build: context: . dockerfile: Dockerfile.new ports: - "3000:3000" environment: - PORT=3000 - GIN_MODE=release - MONGODB_URI=${MONGODB_URI:-mongodb://mongo:27017/ryp} - JWT_SECRET=${JWT_SECRET:-your-secret-key-change-in-production} - GROQ_API_KEY=${GROQ_API_KEY} depends_on: - mongo restart: unless-stopped healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s mongo: image: mongo:7.0 ports: - "27017:27017" environment: - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USERNAME:-admin} - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD:-password} - MONGO_INITDB_DATABASE=ryp volumes: - mongo_data:/data/db - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro restart: unless-stopped healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 30s timeout: 10s retries: 3 start_period: 40s nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./ssl:/etc/nginx/ssl:ro depends_on: - app restart: unless-stopped profiles: - production volumes: mongo_data: networks: default: driver: bridge