127 lines
5.1 KiB
Markdown
127 lines
5.1 KiB
Markdown
# Исправление ошибки сборки Docker Compose
|
||
|
||
## Проблема
|
||
Система пыталась собрать и запустить сервис `web2-client`, который может отсутствовать на некоторых нодах, что приводило к ошибке:
|
||
```
|
||
target web2-client: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory
|
||
```
|
||
|
||
## Решение
|
||
|
||
Исправлены **ЧЕТЫРЕ** критические проблемы:
|
||
|
||
### 1. Docker Compose исправления
|
||
В `docker-compose.production.yml`:
|
||
- Добавлен профиль для web2-client: `profiles: ["main-node"]`
|
||
- Удалена зависимость nginx на web2-client (nginx теперь зависит только от app)
|
||
- Удалена устаревшая строка `version: '3.8'`
|
||
|
||
```yaml
|
||
web2-client:
|
||
profiles: ["main-node"] # Only build for main nodes
|
||
# ... остальная конфигурация
|
||
|
||
nginx:
|
||
depends_on:
|
||
- app # Убрано: - web2-client
|
||
```
|
||
|
||
### 2. Умная логика сборки и запуска
|
||
Обновлен `setup_production_server.sh` с graceful fallback логикой:
|
||
|
||
**Для основной ноды (main):**
|
||
- Сначала пытается собрать/запустить с профилем `main-node` (включая web2-client)
|
||
- Если не удается, fallback к основным сервисам: `app postgres redis`
|
||
|
||
**Для обычной ноды (regular):**
|
||
- Сразу собирает/запускает только основные сервисы без web2-client
|
||
|
||
### 3. Исправление Dockerfile зависимостей
|
||
**Проблема:** `ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?`
|
||
|
||
В [`Dockerfile.simple`](my-uploader-bot/Dockerfile.simple:13) добавлен git:
|
||
```dockerfile
|
||
RUN apt-get update && apt-get install -y \
|
||
build-essential \
|
||
curl \
|
||
git \ # ✅ Добавлено для установки tonsdk из GitHub
|
||
ffmpeg \
|
||
libmagic1 \
|
||
libpq-dev \
|
||
pkg-config \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
```
|
||
|
||
### 4. Исправление конфликта зависимостей Python
|
||
**Проблема:** `ERROR: Cannot install -r requirements.txt ... because these package versions have conflicting dependencies`
|
||
|
||
**Две проблемы:**
|
||
1. `aiogram 3.13.0` требует `aiofiles~=23.2.1`, а указана `aiofiles==24.1.0`
|
||
2. [`Dockerfile.simple`](my-uploader-bot/Dockerfile.simple:23) копировал неправильный файл
|
||
|
||
**✅ Решение:**
|
||
- В [`requirements.txt`](my-uploader-bot/requirements.txt:31) изменена версия aiofiles:
|
||
```txt
|
||
# Было: aiofiles==24.1.0
|
||
# Стало: aiofiles==23.2.1 # Совместимо с aiogram
|
||
```
|
||
|
||
- В [`Dockerfile.simple`](my-uploader-bot/Dockerfile.simple:23) исправлен копируемый файл:
|
||
```dockerfile
|
||
# Было: COPY requirements_new.txt ./requirements.txt
|
||
# Стало: COPY requirements.txt ./requirements.txt
|
||
```
|
||
|
||
### 5. Обновленные управляющие скрипты
|
||
- `start.sh` - умный запуск с fallback логикой
|
||
- `rebuild.sh` - пересборка с учетом доступных модулей
|
||
- `systemd_start.sh` - обертка для systemd service
|
||
|
||
## Поведение системы
|
||
|
||
### Если web2-client модуль доступен:
|
||
```bash
|
||
✅ Запущены все сервисы основной ноды (включая web2-client)
|
||
```
|
||
|
||
### Если web2-client модуль недоступен:
|
||
```bash
|
||
⚠️ Web2-client недоступен, запускаем основные сервисы...
|
||
✅ Запущены основные сервисы (web2-client пропущен)
|
||
```
|
||
|
||
## Команды для проверки
|
||
|
||
### Проверка статуса:
|
||
```bash
|
||
sudo /home/myuploader/uploader-bot/status.sh
|
||
```
|
||
|
||
### Ручной запуск с профилем:
|
||
```bash
|
||
# Основная нода с web2-client
|
||
docker-compose -f docker-compose.production.yml --profile main-node up -d
|
||
|
||
# Только основные сервисы
|
||
docker-compose -f docker-compose.production.yml up -d app postgres redis
|
||
```
|
||
|
||
### Проверка доступных сервисов:
|
||
```bash
|
||
docker-compose -f docker-compose.production.yml config --services
|
||
```
|
||
|
||
## Типы нод
|
||
|
||
### Main Node (основная)
|
||
- Полный стек: uploader-bot + converter-module + web2-client
|
||
- Web интерфейс доступен на главной странице
|
||
- API доступен через `/api/`
|
||
|
||
### Regular Node (обычная)
|
||
- Основной стек: uploader-bot + converter-module
|
||
- Только API интерфейс на главной странице
|
||
- Меньше ресурсов, быстрее развертывание
|
||
|
||
## Результат
|
||
Теперь система корректно работает независимо от наличия всех модулей и автоматически адаптируется к доступным компонентам. |