fix
This commit is contained in:
parent
4ec12873bd
commit
56c45365c6
|
|
@ -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"]
|
||||||
|
|
@ -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"
|
||||||
|
|
@ -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"
|
||||||
|
|
@ -10,12 +10,12 @@ echo "🔒 НАСТРОЙКА SSL ДЛЯ $DOMAIN"
|
||||||
# Проверка что приложение работает
|
# Проверка что приложение работает
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== 1. ПРОВЕРКА ПРИЛОЖЕНИЯ ==="
|
echo "=== 1. ПРОВЕРКА ПРИЛОЖЕНИЯ ==="
|
||||||
if timeout 5 curl -s http://localhost:3000/api/health > /dev/null 2>&1; then
|
if timeout 5 curl -s http://localhost:15100/health > /dev/null 2>&1; then
|
||||||
echo "✅ Приложение работает на порту 3000"
|
echo "✅ Приложение работает на порту 15100"
|
||||||
else
|
else
|
||||||
echo "❌ Приложение НЕ работает на порту 3000!"
|
echo "❌ Приложение НЕ работает на порту 15100!"
|
||||||
echo "Сначала исправьте приложение:"
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -35,7 +35,7 @@ server {
|
||||||
}
|
}
|
||||||
|
|
||||||
location /api/ {
|
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 Host \$host;
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
|
|
@ -46,13 +46,13 @@ server {
|
||||||
}
|
}
|
||||||
|
|
||||||
location /health {
|
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 Host \$host;
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
location / {
|
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 Host \$host;
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
|
|
@ -133,7 +133,7 @@ server {
|
||||||
client_max_body_size 100M;
|
client_max_body_size 100M;
|
||||||
|
|
||||||
location /api/ {
|
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 Host \$host;
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
|
|
@ -144,14 +144,14 @@ server {
|
||||||
}
|
}
|
||||||
|
|
||||||
location /health {
|
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 Host \$host;
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
proxy_set_header X-Forwarded-Proto https;
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
}
|
}
|
||||||
|
|
||||||
location / {
|
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 Host \$host;
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
|
|
|
||||||
|
|
@ -247,12 +247,12 @@ def main():
|
||||||
app.add_event_handler("startup", startup_event)
|
app.add_event_handler("startup", startup_event)
|
||||||
app.add_event_handler("shutdown", shutdown_event)
|
app.add_event_handler("shutdown", shutdown_event)
|
||||||
|
|
||||||
# Определить порт
|
# Определить порт (15100 для MY Network)
|
||||||
port = 8000
|
port = 15100
|
||||||
|
|
||||||
# Попробовать найти свободный порт
|
# Попробовать найти свободный порт (приоритет 15100)
|
||||||
import socket
|
import socket
|
||||||
for test_port in [8000, 8001, 8080, 15100]:
|
for test_port in [15100, 8000, 8001, 8080]:
|
||||||
try:
|
try:
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
sock.bind(('', test_port))
|
sock.bind(('', test_port))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue