# Исправление ошибки сборки 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 интерфейс на главной странице - Меньше ресурсов, быстрее развертывание ## Результат Теперь система корректно работает независимо от наличия всех модулей и автоматически адаптируется к доступным компонентам.