# Решение проблем со статикой и API ## Исправленные проблемы ### ✅ Статические файлы Django **Проблема**: Статические файлы Django REST Framework не загружались (404 ошибки) **Решение**: 1. Добавлен WhiteNoise middleware в `settings.py`: ```python MIDDLEWARE = [ "corsheaders.middleware.CorsMiddleware", 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', # Добавлено # ... остальные middleware ] ``` 2. Настроено хранилище статических файлов: ```python STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' ``` 3. Создан `entrypoint.sh` для сборки статики при запуске: ```bash #!/bin/bash echo "Collecting static files..." python3 manage.py collectstatic --noinput --clear echo "Applying database migrations..." python3 manage.py migrate --noinput echo "Starting server..." exec gunicorn backend.wsgi:application --bind 0.0.0.0:8000 ``` 4. Обновлен `Dockerfile` для использования entrypoint ### ✅ Автоматические миграции Теперь миграции применяются автоматически при запуске контейнера ### ⚠️ Frontend API подключение **Проблема**: Frontend не может подключиться к backend API в Docker среде **Частичное решение**: - Обновлена конфигурация Next.js для использования `web:8000` внутри Docker - API прокси работает с редиректами ## Результат ### Работающие сервисы: - ✅ **Backend**: http://localhost:8000 - ✅ **Backend API**: http://localhost:8000/api/ - ✅ **Статические файлы**: http://localhost:8000/static/* - ✅ **Django Admin**: http://localhost:8000/admin/ - ✅ **Frontend**: http://localhost:3000 - ✅ **PostgreSQL**: localhost:5432 ### Команды для запуска: ```bash # Запуск всех сервисов docker-compose up -d # Проверка статуса docker-compose ps # Просмотр логов docker-compose logs web docker-compose logs frontend # Остановка docker-compose down ``` ### Переменные окружения (в .env): ```env DJANGO_SECRET_KEY=your-secret-key DJANGO_DEBUG=True DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost,0.0.0.0 DATABASE_NAME=links_db DATABASE_USER=links_user DATABASE_PASSWORD=links_password DATABASE_HOST=db DATABASE_PORT=5432 POSTGRES_DB=links_db POSTGRES_USER=links_user POSTGRES_PASSWORD=links_password NEXT_PUBLIC_API_URL=http://localhost:8000 ``` ## Проверка работы ### Backend статика: ```bash curl -I http://localhost:8000/static/rest_framework/css/bootstrap.min.css # Должен вернуть 200 OK ``` ### API endpoints: ```bash curl -s http://localhost:8000/api/ | jq # Должен вернуть JSON с endpoints ``` ### Frontend: ```bash curl -I http://localhost:3000 # Должен вернуть 200 OK ```