refactor. pre-deploy
This commit is contained in:
112
FIXES.md
Normal file
112
FIXES.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# Решение проблем со статикой и 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
|
||||
```
|
||||
Reference in New Issue
Block a user