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

112 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Решение проблем со статикой и 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
```