fix(docker): resolve nginx and backend path configuration issues
All checks were successful
continuous-integration/drone/push Build is passing

- Add nginx/default.conf with simplified configuration to fix "no events section" error
- Update docker-compose.yml to mount nginx/default.conf instead of nginx.conf
- Fix backend/daemons.py data path from backend/data/daemons.json to data/daemons.json
- Improve users.json path detection with fallback logic in daemons.py
- Add servers directory to .gitignore
- Create DOCKER_FIX.md documentation with troubleshooting steps and solutions
- Ensure data directory is created automatically when backend starts
This commit is contained in:
2026-01-17 10:32:46 +06:00
parent d188cec1f0
commit e02789ef53
5 changed files with 245 additions and 3 deletions

174
DOCKER_FIX.md Normal file
View File

@@ -0,0 +1,174 @@
# Исправление Docker ошибок
## Проблемы
1. **Nginx**: `no "events" section in configuration`
2. **Backend**: `FileNotFoundError: [Errno 2] No such file or directory: 'backend/data'`
## Исправления
### 1. ✅ Исправлена nginx конфигурация
- Создан файл `nginx/default.conf` с упрощенной конфигурацией
- Обновлен `docker-compose.yml` для использования правильного пути
### 2. ✅ Исправлен путь к папке данных
- В `backend/daemons.py` изменен путь с `backend/data/daemons.json` на `data/daemons.json`
- Добавлена проверка существования файла пользователей
## Что нужно сделать
### Вариант 1: Обновить файлы и перезапустить
1. **Скопируйте обновленные файлы**:
- `backend/daemons.py`
- `nginx/default.conf` (новый файл)
- `docker-compose.yml`
2. **Остановите контейнеры**:
```bash
docker-compose down
```
3. **Пересоберите и запустите**:
```bash
docker-compose up --build -d
```
### Вариант 2: Быстрое исправление (без пересборки)
1. **Остановите только nginx**:
```bash
docker-compose stop nginx
```
2. **Создайте папку data в контейнере mc-panel**:
```bash
docker exec mc-panel mkdir -p /app/data
```
3. **Запустите nginx с новой конфигурацией**:
```bash
docker-compose up nginx -d
```
## Проверка
После исправления:
1. **Проверьте статус контейнеров**:
```bash
docker-compose ps
```
Должно быть:
```
NAME STATE
mc-panel Up
mc-panel-nginx Up
```
2. **Проверьте логи**:
```bash
docker-compose logs mc-panel
docker-compose logs nginx
```
3. **Откройте панель**:
- Перейдите на IP сервера (порт 80)
- Должна открыться панель управления
## Структура файлов после исправления
```
📁 Проект
├── 📁 nginx/
│ ├── default.conf # ✅ Новая упрощенная конфигурация
│ └── nginx.conf # Старая (не используется)
├── 📁 backend/
│ └── daemons.py # ✅ Исправлен путь к data/
├── docker-compose.yml # ✅ Обновлен для nginx/default.conf
└── 📁 data/ # Создается автоматически
├── daemons.json
├── users.json
└── tickets.json
```
## Переменные окружения
Убедитесь, что в `.env` файле заданы:
```env
# ZITADEL SSO
ZITADEL_ISSUER=https://sso.nevetime.ru
ZITADEL_CLIENT_ID=your_client_id
ZITADEL_CLIENT_SECRET=your_client_secret
# URLs
BASE_URL=https://your-domain.com
FRONTEND_URL=https://your-domain.com
# Security
SECRET_KEY=your-secret-key-here
```
## Если проблемы остались
### Nginx всё еще не запускается
1. **Проверьте монтирование**:
```bash
docker exec mc-panel-nginx ls -la /etc/nginx/conf.d/
```
2. **Проверьте синтаксис**:
```bash
docker exec mc-panel-nginx nginx -t
```
3. **Используйте стандартную конфигурацию**:
```bash
# Удалите volume с nginx конфигурацией из docker-compose.yml
# Nginx будет использовать стандартную конфигурацию
```
### Backend всё еще падает
1. **Создайте папки вручную**:
```bash
mkdir -p data
touch data/users.json
touch data/tickets.json
touch data/daemons.json
```
2. **Проверьте права доступа**:
```bash
chmod 755 data
chmod 644 data/*.json
```
## Альтернативное решение
Если проблемы продолжаются, можно запустить без nginx:
1. **Отключите nginx в docker-compose.yml**:
```yaml
# Закомментируйте секцию nginx
```
2. **Измените порты mc-panel**:
```yaml
ports:
- "80:8000" # Прямой доступ к панели
```
3. **Перезапустите**:
```bash
docker-compose up -d mc-panel
```
---
**После исправления панель должна работать на IP сервера через порт 80!**