From 8da87020045d9f50a30cf239c86780bfcce248c1 Mon Sep 17 00:00:00 2001 From: smolkik-code Date: Tue, 6 Jan 2026 12:19:04 +0700 Subject: [PATCH] add docker --- .dockerignore | 17 +++++++++++++++++ Dockerfile | 33 +++++++++++++++++++++++++++++++++ docker-compose.yml | 26 ++++++++++++++++++++++++++ requirements.txt | 2 ++ 4 files changed, 78 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 requirements.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..1f7b999 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,17 @@ +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python +env/ +venv/ +.venv/ +.env +*.sqlite3 +*.log +.git/ +.gitignore +README.md +Dockerfile +docker-compose.yml +data/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..66e708b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +# Используем официальный Python образ +FROM python:3.11-slim + +# Устанавливаем системные зависимости +RUN apt-get update && apt-get install -y \ + tzdata \ + && rm -rf /var/lib/apt/lists/* + +# Устанавливаем рабочую директорию +WORKDIR /app + +# Копируем зависимости +COPY requirements.txt . + +# Устанавливаем зависимости Python +RUN pip install --no-cache-dir -r requirements.txt + +# Копируем исходный код +COPY . . + +# Создаем директорию для данных +RUN mkdir -p /app/data + +# Устанавливаем переменные окружения +ENV PYTHONUNBUFFERED=1 +ENV TZ=UTC + +# Создаем пользователя для безопасности (опционально) +RUN useradd -m -u 1000 botuser && chown -R botuser:botuser /app +USER botuser + +# Запускаем бота +CMD ["python", "bot.py"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7a401f6 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3.8' + +services: + pill-bot: + build: . + container_name: pill-reminder-bot + restart: unless-stopped + environment: + - TZ=${TZ:-Europe/Moscow} + env_file: + - .env + volumes: + - ./data:/app/data + # Для разработки можно монтировать код: + # - ./bot.py:/app/bot.py:ro + healthcheck: + test: ["CMD-SHELL", "pgrep -f python || exit 1"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..4e38a44 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +python-telegram-bot==20.7 +python-dotenv==1.0.0 \ No newline at end of file