services:
  # Сервис Фронтенда
  frontend:
    build:
      context: ./ # Путь к Dockerfile фронтенда (предполагается, что Dockerfile лежит в корне dating-app-pwa)
      dockerfile: Dockerfile # Имя Dockerfile для фронтенда
    # ports: # <--- ЗАКОММЕНТИРОВАНО
    #   - "8080:80" # Пробрасываем порт 80 контейнера (Nginx) на порт 8080 хоста
    restart: unless-stopped
    depends_on: # Фронтенд зависит от бэкенда (для API запросов, хотя Nginx сам по себе запустится)
      - backend
    networks: # Подключаем к общей сети
      - app-network
      - proxy-net # <--- ИЗМЕНЕНО ИМЯ СЕТИ

  # Сервис Бэкенда
  backend:
    build:
      context: ./backend # Путь к Dockerfile бэкенда
      dockerfile: Dockerfile # Имя Dockerfile для бэкенда
    # ports: # <--- ЗАКОММЕНТИРОВАНО
    #   - "5000:5000" # Пробрасываем порт 5000 контейнера (Node.js) на порт 5000 хоста
    environment:
      # Передаем переменные окружения в контейнер бэкенда
      - NODE_ENV=production # Убедись, что это установлено
      - PORT=5000 # Порт внутри контейнера бэкенда
      - MONGO_URI=mongodb://mongo_db:27017/dating_app_db # <--- ВАЖНО: используем имя сервиса mongo_db
      - JWT_SECRET=${JWT_SECRET} # Передаем JWT_SECRET из .env файла хоста
      - CLOUDINARY_CLOUD_NAME=${CLOUDINARY_CLOUD_NAME} # Добавлено
      - CLOUDINARY_API_KEY=${CLOUDINARY_API_KEY}       # Добавлено
      - CLOUDINARY_API_SECRET=${CLOUDINARY_API_SECRET} # Добавлено
    depends_on:
      - mongo_db # Бэкенд зависит от базы данных
    restart: unless-stopped
    # volumes: # Для продакшена volumes с кодом обычно не используют, код должен быть в образе
      # - ./backend:/usr/src/app # <--- ЗАКОММЕНТИРОВАНО для продакшена
      # - /usr/src/app/node_modules # <--- ЗАКОММЕНТИРОВАНО для продакшена
    networks:
      - app-network
      - proxy-net # <--- ИЗМЕНЕНО ИМЯ СЕТИ

  # Сервис Базы Данных MongoDB
  mongo_db:
    image: mongo:latest # Используем официальный образ MongoDB
    ports: # <--- Порт для mongo_db можно оставить, если нужен прямой доступ к базе с хост-машины сервера для отладки
      - "27017:27017" # Но для безопасности лучше его закрыть, если он не нужен извне Docker-сети
    volumes:
      - mongo-data:/data/db # Сохраняем данные MongoDB в именованном вольюме
    restart: unless-stopped
    networks:
      - app-network # MongoDB не обязательно должна быть в сети npm_proxy_network

# Определяем сети
networks:
  app-network:
    driver: bridge # Стандартный тип сети для docker-compose
  proxy-net: # <--- ИЗМЕНЕНО ИМЯ СЕТИ
    external: true   # Указывает, что эта сеть создана NPM и уже существует

# Определяем именованные вольюмы
volumes:
  mongo-data: # Для персистентного хранения данных MongoDB