fix: Docker container exit on startup
- bot.py: добавить проверку sys.stdin.isatty() для консольного ввода - В Docker stdin не является терминалом, input() падал с EOFError - Консольный режим теперь запускается только в интерактивном терминале - Dockerfile: добавить console_commands/, убрать копирование .env, использовать переменные docker-compose
This commit is contained in:
parent
7bfb96c31d
commit
6e31a7e6ff
@ -11,9 +11,11 @@ RUN pip install --no-cache-dir -r requirements.txt
|
||||
COPY bot.py .
|
||||
COPY commands/ commands/
|
||||
COPY utils/ utils/
|
||||
COPY console_commands/ console_commands
|
||||
|
||||
# Копируем .env, если он есть (или передавать переменные через docker-compose)
|
||||
COPY .env* .env 2>/dev/null || echo "No .env file - use docker-compose environment variables"
|
||||
# .env передаётся через docker-compose environment:
|
||||
# DISCORD_TOKEN=${DISCORD_TOKEN}
|
||||
# MORNING_TIME=${MORNING_TIME:-07:00}
|
||||
|
||||
# Healthcheck: проверяем, что бот запущен
|
||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
|
||||
|
||||
17
bot.py
17
bot.py
@ -118,16 +118,19 @@ def console_input():
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Введите 'stop' для остановки бота")
|
||||
token = os.getenv("DISCORD_TOKEN")
|
||||
if not token:
|
||||
print("Ошибка: токен не найден в .env")
|
||||
sys.exit(1)
|
||||
|
||||
thread = threading.Thread(target=console_input, daemon=True)
|
||||
thread.start()
|
||||
# Консольный ввод работает только в интерактивном терминале
|
||||
# В Docker stdin недоступен — пропускаем консольный режим
|
||||
if sys.stdin.isatty():
|
||||
print("Введите 'stop' для остановки бота")
|
||||
thread = threading.Thread(target=console_input, daemon=True)
|
||||
thread.start()
|
||||
|
||||
try:
|
||||
token = os.getenv("DISCORD_TOKEN")
|
||||
if not token:
|
||||
print("Ошибка: токен не найден в .env")
|
||||
sys.exit(1)
|
||||
bot.run(token)
|
||||
except KeyboardInterrupt:
|
||||
print("\nОстановка бота...")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user