Имеется два стенда приложения (prod и test), каждый поднят через Docker Compose:
Frontend — SPA на Vite, упакованное в Nginx.
Backend — несколько сервисов (gateway, auth, calendar и др.) на разных портах.
Проблема: при сборке и запуске тестового фронтенда (через docker-compose.test.yml) все запросы к /api/... всё равно доходят до продового бэкенда, хотя:
в docker-compose.test.yml передаётся build.args: VITE_API_URL: "/api";
в nginx.test.conf прописан proxy_pass http://host.docker.internal:4002/;
в контейнере при проверке конфигурации видно правильный файл, но в браузере всё равно выходит на app.....ru:4000 (prod).
Что уже пробовали:
Объявление ARG VITE_API_URL и ENV VITE_API_URL в Dockerfile.
Замена абсолютных URL на относительный /api.
Проверки монтирования nginx.test.conf и логов Nginx.
Удаление и перезапуск контейнеров с --remove-orphans.
Очистка кэша браузера и отключение service worker.
Нужно:
Выявить причину, из-за которой Vite/Nginx всё ещё «подсовывает» продовый адрес при запросах.
Исправить Dockerfile, Compose и/или Nginx-конфиг так, чтобы тестовый фронтенд однозначно ходил на тестовый бэкенд на порту 4002 (или по имени сервиса).
При необходимости дать рекомендации по улучшению структуры Compose-файлов, сетей Docker и CI/CD для чёткого разделения prod/test окружений.