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