diff --git a/Dockerfile.simple b/Dockerfile.simple new file mode 100644 index 0000000..a2a5d51 --- /dev/null +++ b/Dockerfile.simple @@ -0,0 +1,43 @@ +FROM python:3.11-slim + +# Установка системных зависимостей +RUN apt-get update && apt-get install -y \ + build-essential \ + curl \ + git \ + && rm -rf /var/lib/apt/lists/* + +# Создание рабочей директории +WORKDIR /app + +# Копирование файлов зависимостей +COPY pyproject.toml ./ +COPY requirements_new.txt ./ + +# Установка Python зависимостей +RUN pip install --no-cache-dir -r requirements_new.txt + +# Копирование исходного кода +COPY . . + +# Создание директорий для данных и логов +RUN mkdir -p /app/data /app/logs + +# Создание пользователя для безопасности +RUN groupadd -r myapp && useradd -r -g myapp myapp +RUN chown -R myapp:myapp /app +USER myapp + +# Порт приложения +EXPOSE 15100 + +# Переменные окружения +ENV PYTHONPATH=/app +ENV PYTHONUNBUFFERED=1 + +# Health check +HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ + CMD curl -f http://localhost:15100/health || exit 1 + +# Команда запуска +CMD ["python", "start_my_network.py"] \ No newline at end of file diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..4c0dd8a --- /dev/null +++ b/app/__init__.py @@ -0,0 +1,8 @@ +""" +MY Uploader Bot - Distributed Content Protocol +Main application package +""" + +__version__ = "2.0.0" +__author__ = "MY Network Team" +__description__ = "Distributed Content Protocol v2.0" \ No newline at end of file diff --git a/fix_app_restart.sh b/fix_app_restart.sh new file mode 100644 index 0000000..a0c71f0 --- /dev/null +++ b/fix_app_restart.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +# Быстрое исправление и перезапуск MY Network приложения +set -e + +echo "🔧 ИСПРАВЛЕНИЕ ПРИЛОЖЕНИЯ MY NETWORK" + +# Остановка контейнеров +echo "" +echo "=== 1. ОСТАНОВКА КОНТЕЙНЕРОВ ===" +docker-compose -f deployment/docker-compose.production.yml down app + +# Перестройка приложения +echo "" +echo "=== 2. ПЕРЕСТРОЙКА ПРИЛОЖЕНИЯ ===" +docker-compose -f deployment/docker-compose.production.yml build app --no-cache + +# Запуск приложения +echo "" +echo "=== 3. ЗАПУСК ПРИЛОЖЕНИЯ ===" +docker-compose -f deployment/docker-compose.production.yml up app -d + +# Ожидание запуска +echo "" +echo "=== 4. ОЖИДАНИЕ ЗАПУСКА ===" +echo "Ждем 30 секунд для инициализации..." +sleep 30 + +# Проверка статуса +echo "" +echo "=== 5. ПРОВЕРКА СТАТУСА ===" + +echo "📦 Статус контейнеров:" +docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep -E "(my-uploader-app|my-postgres|my-redis)" + +echo "" +echo "🧪 Тестирование endpoints:" + +# Тест локального endpoint +if timeout 10 curl -s http://localhost:15100/health > /dev/null 2>&1; then + echo "✅ Приложение работает: http://localhost:15100/health" +else + echo "❌ Приложение НЕ отвечает на http://localhost:15100/health" + echo "" + echo "📄 Последние логи:" + docker logs --tail=20 my-uploader-app + exit 1 +fi + +# Показать информацию +echo "" +echo "=== 6. ИНФОРМАЦИЯ О ПРИЛОЖЕНИИ ===" +curl -s http://localhost:15100/health | python3 -m json.tool 2>/dev/null || echo "Health endpoint недоступен" + +echo "" +echo "🌐 Endpoints:" +echo "• http://localhost:15100/health - Health check" +echo "• http://localhost:15100/ - Main page" +echo "• http://localhost:15100/api/docs - API Documentation" +echo "• http://localhost:15100/api/my/monitor/ - Monitoring" + +echo "" +echo "✅ ПРИЛОЖЕНИЕ ЗАПУЩЕНО И РАБОТАЕТ!" +echo "" +echo "Теперь можно настроить SSL:" +echo "sudo ./setup_ssl_for_domain.sh" \ No newline at end of file diff --git a/setup_ssl_for_domain.sh b/setup_ssl_for_domain.sh index 23df3b0..5324737 100644 --- a/setup_ssl_for_domain.sh +++ b/setup_ssl_for_domain.sh @@ -10,12 +10,12 @@ echo "🔒 НАСТРОЙКА SSL ДЛЯ $DOMAIN" # Проверка что приложение работает echo "" echo "=== 1. ПРОВЕРКА ПРИЛОЖЕНИЯ ===" -if timeout 5 curl -s http://localhost:3000/api/health > /dev/null 2>&1; then - echo "✅ Приложение работает на порту 3000" +if timeout 5 curl -s http://localhost:15100/health > /dev/null 2>&1; then + echo "✅ Приложение работает на порту 15100" else - echo "❌ Приложение НЕ работает на порту 3000!" + echo "❌ Приложение НЕ работает на порту 15100!" echo "Сначала исправьте приложение:" - echo "docker-compose -f deployment/docker-compose.production.yml restart app" + echo "chmod +x fix_app_restart.sh && ./fix_app_restart.sh" exit 1 fi @@ -35,7 +35,7 @@ server { } location /api/ { - proxy_pass http://127.0.0.1:3000/api/; + proxy_pass http://127.0.0.1:15100/api/; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; @@ -46,13 +46,13 @@ server { } location /health { - proxy_pass http://127.0.0.1:3000/api/health; + proxy_pass http://127.0.0.1:15100/health; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; } location / { - proxy_pass http://127.0.0.1:3000/; + proxy_pass http://127.0.0.1:15100/; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; @@ -133,7 +133,7 @@ server { client_max_body_size 100M; location /api/ { - proxy_pass http://127.0.0.1:3000/api/; + proxy_pass http://127.0.0.1:15100/api/; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; @@ -144,14 +144,14 @@ server { } location /health { - proxy_pass http://127.0.0.1:3000/api/health; + proxy_pass http://127.0.0.1:15100/health; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-Proto https; } location / { - proxy_pass http://127.0.0.1:3000/; + proxy_pass http://127.0.0.1:15100/; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; diff --git a/start_my_network.py b/start_my_network.py index 1198f55..d939118 100644 --- a/start_my_network.py +++ b/start_my_network.py @@ -247,12 +247,12 @@ def main(): app.add_event_handler("startup", startup_event) app.add_event_handler("shutdown", shutdown_event) - # Определить порт - port = 8000 + # Определить порт (15100 для MY Network) + port = 15100 - # Попробовать найти свободный порт + # Попробовать найти свободный порт (приоритет 15100) import socket - for test_port in [8000, 8001, 8080, 15100]: + for test_port in [15100, 8000, 8001, 8080]: try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('', test_port))