diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..714b6fe --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +.env +.env.* +!.env.example +.git +.gitignore +.venv +__pycache__ +*.pyc +data/ +data_partial/ +bot.db +*.md +!README.md +.ruff_cache diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..cf74ed5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.12-slim + +WORKDIR /app + +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ + +COPY pyproject.toml uv.lock ./ + +RUN uv sync --frozen --no-dev + +COPY main.py ./ +COPY src/ ./src/ + +RUN mkdir -p data data_partial + +CMD ["uv", "run", "main.py"] diff --git a/README.md b/README.md index 09fd944..d7bae5e 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,25 @@ # Телеграм бот для сбора датасета для автоматического протоколирования совещаний +## Запуск + +### Локально + ```sh -# Создать файл .env из .env.example cp .env.example .env +# Заполнить .env uv run main.py ``` +### Docker + +```sh +cp .env.example .env +# Заполнить .env +docker compose up -d --build +``` + +Данные сохраняются в `data/`, `data_partial/` и `bot.db` — они монтируются как volumes. + ## Данные ### Формат входных данных diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..dec95be --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +services: + bot: + build: . + restart: unless-stopped + environment: + - BOT_TOKEN=${BOT_TOKEN} + - ADMIN_LOGIN=${ADMIN_LOGIN} + - LOG_LEVEL=${LOG_LEVEL:-INFO} + volumes: + - ./data:/app/data + - ./data_partial:/app/data_partial + - ./bot.db:/app/bot.db