update sh

This commit is contained in:
user 2025-07-05 08:12:34 +03:00
parent 2b9fbb6c7d
commit 769e54b8b2
2 changed files with 112 additions and 22 deletions

View File

@ -121,6 +121,7 @@ services:
build:
context: ./modules/web2-client
dockerfile: Dockerfile
profiles: ["main-node"] # Only build for main nodes
container_name: my-web2-client
restart: unless-stopped
depends_on:

View File

@ -823,9 +823,31 @@ if ! check_and_skip "docker_build" "Сборка и запуск"; then
log "Используется $COMPOSE_FILE"
# Сборка образов от имени пользователя сервиса
log "Сборка основного приложения..."
# Сборка образов от имени пользователя сервиса с учетом типа ноды
log "Сборка приложения для типа ноды: $NODE_TYPE..."
if [ "$NODE_TYPE" = "main" ]; then
# Для основной ноды пытаемся собрать с профилем main-node (включая web2-client)
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
if sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" --profile main-node build 2>/dev/null; then
log_success "Сборка основной ноды (с web2-client) завершена"
else
log_warning "Сборка с web2-client не удалась, собираем без него..."
sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" build app postgres redis converter 2>/dev/null || \
sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" build app postgres redis
fi
else
# Для обычного docker-compose.yml собираем все доступные сервисы
sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" build
fi
else
# Для обычной ноды собираем только основные сервисы
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" build app postgres redis converter
else
sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" build app postgres redis indexer ton_daemon license_index convert_process
fi
fi
# Сборка converter image (если есть профиль build-only)
log "Сборка converter image..."
@ -835,15 +857,21 @@ if ! check_and_skip "docker_build" "Сборка и запуск"; then
log "Запуск приложения..."
if [ "$NODE_TYPE" = "main" ]; then
# Для основной ноды запускаем все сервисы включая web2-client
# Для основной ноды пытаемся запустить с профилем main-node
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" up -d app postgres redis web2-client nginx prometheus grafana loki promtail
if sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" --profile main-node up -d 2>/dev/null; then
log "🚀 Запущены все сервисы основной ноды (включая web2-client)"
else
log_warning "Запуск с web2-client не удался, запускаем основные сервисы..."
sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" up -d app postgres redis
log "🚀 Запущены основные сервисы (web2-client пропущен)"
fi
else
sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" up -d
log "🚀 Запущены все доступные сервисы для основной ноды"
fi
log "🚀 Запущены все сервисы для основной ноды"
else
# Для обычной ноды запускаем только основные сервисы без web2-client
# Для обычной ноды запускаем только основные сервисы
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
sudo -u "$SERVICE_USER" docker-compose -f "$COMPOSE_FILE" up -d app postgres redis
else
@ -911,11 +939,20 @@ if ! check_and_skip "final_check" "Финальная проверка"; then
cat > "$MAIN_PROJECT_DIR/start.sh" << EOF
#!/bin/bash
cd $MAIN_PROJECT_DIR
echo "🚀 Запуск MY Uploader Bot (тип ноды: $NODE_TYPE)..."
if [ "$NODE_TYPE" = "main" ]; then
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
docker-compose -f $COMPOSE_FILE up -d app postgres redis web2-client nginx prometheus grafana loki promtail
# Пытаемся запустить с профилем main-node (включая web2-client)
if docker-compose -f $COMPOSE_FILE --profile main-node up -d 2>/dev/null; then
echo "✅ Запущены все сервисы основной ноды (включая web2-client)"
else
echo "⚠️ Web2-client недоступен, запускаем основные сервисы..."
docker-compose -f $COMPOSE_FILE up -d app postgres redis
echo "✅ Запущены основные сервисы (web2-client пропущен)"
fi
else
docker-compose -f $COMPOSE_FILE up -d
echo "✅ Запущены все доступные сервисы для основной ноды"
fi
else
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
@ -923,8 +960,10 @@ else
else
docker-compose -f $COMPOSE_FILE up -d app postgres redis indexer ton_daemon license_index convert_process
fi
echo "✅ Запущены основные сервисы для обычной ноды"
fi
echo "✅ MY Uploader Bot запущен (тип ноды: $NODE_TYPE)"
echo ""
echo "📊 Статус контейнеров:"
docker-compose -f $COMPOSE_FILE ps
EOF
@ -966,12 +1005,41 @@ EOF
cat > "$MAIN_PROJECT_DIR/rebuild.sh" << EOF
#!/bin/bash
cd $MAIN_PROJECT_DIR
echo "🔄 Пересборка и перезапуск..."
echo "🔄 Остановка сервисов..."
docker-compose -f $COMPOSE_FILE down
docker-compose -f $COMPOSE_FILE build
echo "🔧 Пересборка образов для типа ноды: $NODE_TYPE..."
if [ "$NODE_TYPE" = "main" ]; then
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
docker-compose -f $COMPOSE_FILE up -d app postgres redis web2-client nginx prometheus grafana loki promtail
# Пытаемся собрать с профилем main-node
if docker-compose -f $COMPOSE_FILE --profile main-node build 2>/dev/null; then
echo "✅ Сборка основной ноды (с web2-client) завершена"
else
echo "⚠️ Сборка с web2-client не удалась, собираем основные сервисы..."
docker-compose -f $COMPOSE_FILE build app postgres redis converter 2>/dev/null || \
docker-compose -f $COMPOSE_FILE build app postgres redis
fi
else
docker-compose -f $COMPOSE_FILE build
fi
else
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
docker-compose -f $COMPOSE_FILE build app postgres redis converter
else
docker-compose -f $COMPOSE_FILE build app postgres redis indexer ton_daemon license_index convert_process
fi
fi
echo "🚀 Запуск сервисов..."
if [ "$NODE_TYPE" = "main" ]; then
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
if docker-compose -f $COMPOSE_FILE --profile main-node up -d 2>/dev/null; then
echo "✅ Запущены все сервисы основной ноды (включая web2-client)"
else
echo "⚠️ Web2-client недоступен, запускаем основные сервисы..."
docker-compose -f $COMPOSE_FILE up -d app postgres redis
echo "✅ Запущены основные сервисы (web2-client пропущен)"
fi
else
docker-compose -f $COMPOSE_FILE up -d
fi
@ -982,7 +1050,9 @@ else
docker-compose -f $COMPOSE_FILE up -d app postgres redis indexer ton_daemon license_index convert_process
fi
fi
echo "✅ Пересборка завершена"
echo "✅ Пересборка и перезапуск завершены"
echo ""
echo "📊 Статус контейнеров:"
docker-compose -f $COMPOSE_FILE ps
EOF
@ -992,22 +1062,41 @@ EOF
# Настройка автозапуска
log "Настройка автозапуска..."
if [ "$NODE_TYPE" = "main" ]; then
# Создаем обертку скрипта для systemd service (учитывает профили Docker Compose)
cat > "$MAIN_PROJECT_DIR/systemd_start.sh" << EOF
#!/bin/bash
cd $MAIN_PROJECT_DIR
if [ "$NODE_TYPE" = "main" ]; then
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
SERVICE_EXEC_START="/usr/local/bin/docker-compose -f $COMPOSE_FILE up -d app postgres redis web2-client nginx prometheus grafana loki promtail"
# Пытаемся запустить с профилем main-node
if docker-compose -f $COMPOSE_FILE --profile main-node up -d 2>/dev/null; then
echo "✅ Запущены все сервисы основной ноды (включая web2-client)"
else
SERVICE_EXEC_START="/usr/local/bin/docker-compose -f $COMPOSE_FILE up -d"
echo "⚠️ Web2-client недоступен, запускаем основные сервисы..."
docker-compose -f $COMPOSE_FILE up -d app postgres redis
fi
else
docker-compose -f $COMPOSE_FILE up -d
fi
else
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
docker-compose -f $COMPOSE_FILE up -d app postgres redis
else
docker-compose -f $COMPOSE_FILE up -d app postgres redis indexer ton_daemon license_index convert_process
fi
fi
EOF
chmod +x "$MAIN_PROJECT_DIR/systemd_start.sh"
chown "$SERVICE_USER:$SERVICE_USER" "$MAIN_PROJECT_DIR/systemd_start.sh"
if [ "$NODE_TYPE" = "main" ]; then
SERVICE_DESCRIPTION="MY Uploader Bot (Main Node)"
else
if [ "$COMPOSE_FILE" = "docker-compose.production.yml" ]; then
SERVICE_EXEC_START="/usr/local/bin/docker-compose -f $COMPOSE_FILE up -d app postgres redis"
else
SERVICE_EXEC_START="/usr/local/bin/docker-compose -f $COMPOSE_FILE up -d app postgres redis indexer ton_daemon license_index convert_process"
fi
SERVICE_DESCRIPTION="MY Uploader Bot (Regular Node)"
fi
SERVICE_EXEC_START="$MAIN_PROJECT_DIR/systemd_start.sh"
cat > /etc/systemd/system/my-uploader-bot.service << EOF
[Unit]
Description=$SERVICE_DESCRIPTION