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 # Сервис Бэкенда backend: build: context: ./backend # Путь к Dockerfile бэкенда dockerfile: Dockerfile # Имя Dockerfile для бэкенда ports: - "5000:5000" # Пробрасываем порт 5000 контейнера (Node.js) на порт 5000 хоста environment: # Передаем переменные окружения в контейнер бэкенда - PORT=5000 # Порт внутри контейнера бэкенда - MONGO_URI=mongodb://mongo_db:27017/dating_app_db # <--- ВАЖНО: используем имя сервиса mongo_db - JWT_SECRET=${JWT_SECRET} # Передаем JWT_SECRET из .env файла хоста (см. ниже) depends_on: - mongo_db # Бэкенд зависит от базы данных restart: unless-stopped volumes: # Можно использовать для разработки, чтобы код обновлялся без пересборки образа - ./backend:/usr/src/app # Монтируем локальную папку backend в контейнер - /usr/src/app/node_modules # Исключаем node_modules из монтирования, чтобы использовать те, что в образе networks: - app-network # Сервис Базы Данных MongoDB mongo_db: image: mongo:latest # Используем официальный образ MongoDB ports: - "27017:27017" # Стандартный порт MongoDB volumes: - mongo-data:/data/db # Сохраняем данные MongoDB в именованном вольюме restart: unless-stopped networks: - app-network # Определяем сети networks: app-network: driver: bridge # Стандартный тип сети для docker-compose # Определяем именованные вольюмы volumes: mongo-data: # Для персистентного хранения данных MongoDB