services: # =================== # Infrastructure # =================== mongodb: image: mongo:7.0 container_name: web-inspector-mongodb restart: unless-stopped environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER:-admin} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD:-password123} ports: - "${MONGO_PORT:-27022}:27017" volumes: - mongodb_data:/data/db networks: - app-network healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 30s timeout: 10s retries: 3 redis: image: redis:7-alpine container_name: web-inspector-redis restart: unless-stopped ports: - "${REDIS_PORT:-6392}:6379" volumes: - redis_data:/data networks: - app-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 30s timeout: 10s retries: 3 # =================== # Backend # =================== backend: build: context: ./backend dockerfile: Dockerfile container_name: web-inspector-backend restart: unless-stopped ports: - "${BACKEND_PORT:-8011}:8000" environment: - MONGODB_URL=mongodb://${MONGO_USER:-admin}:${MONGO_PASSWORD:-password123}@mongodb:27017/ - DB_NAME=${DB_NAME:-web_inspector} - REDIS_URL=redis://redis:6379 depends_on: mongodb: condition: service_healthy redis: condition: service_healthy networks: - app-network # =================== # Frontend # =================== frontend: build: context: ./frontend dockerfile: Dockerfile container_name: web-inspector-frontend restart: unless-stopped ports: - "${FRONTEND_PORT:-3011}:3000" environment: - NEXT_PUBLIC_API_URL= depends_on: - backend networks: - app-network volumes: mongodb_data: redis_data: networks: app-network: driver: bridge