thbotapidev / start.sh
WalleGriffkinder's picture
Update start.sh
5c2c1d1 verified
#!/bin/sh
set -e
# Устанавливаем порт для Express, если не задан переменной окружения
EXPRESS_PORT_EFFECTIVE=${EXPRESS_PORT:-15782}
# Запускаем telegram-bot-api как основной процесс
telegram-bot-api --local --http-port=7860 --dir=/var/lib/telegram-bot-api --temp-dir=/var/lib/telegram-bot-api &
TELEGRAM_PID=$!
echo "[$(date +%Y-%m-%dT%H:%M:%S%Z)] Telegram Bot API started with PID $TELEGRAM_PID on port 7860"
# Запускаем скрипт статистики
cd /app
node stats-reporter.js &
NODE_STATS_PID=$!
echo "[$(date +%Y-%m-%dT%H:%M:%S%Z)] Stats reporter script started with PID $NODE_STATS_PID"
# Запускаем Express сервер
node server.mjs &
NODE_EXPRESS_PID=$!
echo "[$(date +%Y-%m-%dT%H:%M:%S%Z)] Express server started with PID $NODE_EXPRESS_PID on port $EXPRESS_PORT_EFFECTIVE (accessible inside container)"
# Настраиваем перехват сигналов
trap "echo '[$(date +%Y-%m-%dT%H:%M:%S%Z)] Caught SIGINT/SIGTERM, shutting down...'; \
kill $TELEGRAM_PID $NODE_STATS_PID $NODE_EXPRESS_PID 2>/dev/null || true; \
echo '[$(date +%Y-%m-%dT%H:%M:%S%Z)] Shutdown complete.'; \
exit 0" SIGINT SIGTERM
# Ожидаем завершения основного процесса (telegram-bot-api)
echo "[$(date +%Y-%m-%dT%H:%M:%S%Z)] Waiting for Telegram Bot API (PID $TELEGRAM_PID) to exit..."
wait $TELEGRAM_PID
EXIT_CODE=$?
echo "[$(date +%Y-%m-%dT%H:%M:%S%Z)] Telegram Bot API process (PID $TELEGRAM_PID) exited with code $EXIT_CODE."
# Если основной процесс завершился, останавливаем все остальные
echo "[$(date +%Y-%m-%dT%H:%M:%S%Z)] Main process exited, ensuring other processes are stopped..."
kill $NODE_STATS_PID $NODE_EXPRESS_PID 2>/dev/null || true
echo "[$(date +%Y-%m-%dT%H:%M:%S%Z)] Script finished."
exit $EXIT_CODE