Files
links/docs/FIXES.md
Andrey K. Choi 2e535513b5 + Приведены все функции приложения в рабочий вид
+ Наведен порядок в файлах проекта
+ Наведен порядок в документации
+ Настроены скрипты установки, развертки и так далее, расширен MakeFile
2025-11-02 06:09:55 +09:00

3.2 KiB
Raw Permalink Blame History

Решение проблем со статикой и API

Исправленные проблемы

Статические файлы Django

Проблема: Статические файлы Django REST Framework не загружались (404 ошибки)

Решение:

  1. Добавлен WhiteNoise middleware в settings.py:

    MIDDLEWARE = [
        "corsheaders.middleware.CorsMiddleware",
        'django.middleware.security.SecurityMiddleware',
        'whitenoise.middleware.WhiteNoiseMiddleware',  # Добавлено
        # ... остальные middleware
    ]
    
  2. Настроено хранилище статических файлов:

    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    
  3. Создан entrypoint.sh для сборки статики при запуске:

    #!/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 прокси работает с редиректами

Результат

Работающие сервисы:

Команды для запуска:

# Запуск всех сервисов
docker-compose up -d

# Проверка статуса
docker-compose ps

# Просмотр логов
docker-compose logs web
docker-compose logs frontend

# Остановка
docker-compose down

Переменные окружения (в .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 статика:

curl -I http://localhost:8000/static/rest_framework/css/bootstrap.min.css
# Должен вернуть 200 OK

API endpoints:

curl -s http://localhost:8000/api/ | jq
# Должен вернуть JSON с endpoints

Frontend:

curl -I http://localhost:3000
# Должен вернуть 200 OK