mirror of
https://github.com/artemium428/428th-exchange-bot.git
synced 2026-09-15 16:56:20 +00:00
Add Docker Compose deploy setup for VPS.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
8f6d2c07d6
commit
501c2a5985
5 changed files with 77 additions and 0 deletions
16
.dockerignore
Normal file
16
.dockerignore
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
.git
|
||||||
|
.venv
|
||||||
|
venv
|
||||||
|
__pycache__
|
||||||
|
*.py[cod]
|
||||||
|
*.egg-info
|
||||||
|
.pytest_cache
|
||||||
|
.mypy_cache
|
||||||
|
.env
|
||||||
|
data
|
||||||
|
*.db
|
||||||
|
.DS_Store
|
||||||
|
README.md
|
||||||
|
.dockerignore
|
||||||
|
Dockerfile
|
||||||
|
docker-compose.yml
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
BOT_TOKEN=123456:ABC-DEF
|
BOT_TOKEN=123456:ABC-DEF
|
||||||
MANAGER_GROUP_ID=-1001234567890
|
MANAGER_GROUP_ID=-1001234567890
|
||||||
|
# Local: data/bot.db — Docker Compose sets /app/data/bot.db
|
||||||
DATABASE_PATH=data/bot.db
|
DATABASE_PATH=data/bot.db
|
||||||
# Optional text overrides (per language). Prefer _RU / _UK.
|
# Optional text overrides (per language). Prefer _RU / _UK.
|
||||||
# Bare WELCOME_TEXT / ACK_TEXT / COOLDOWN_TEXT apply only to RU
|
# Bare WELCOME_TEXT / ACK_TEXT / COOLDOWN_TEXT apply only to RU
|
||||||
|
|
|
||||||
20
Dockerfile
Normal file
20
Dockerfile
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
FROM python:3.12-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||||
|
PYTHONUNBUFFERED=1 \
|
||||||
|
DATABASE_PATH=/app/data/bot.db
|
||||||
|
|
||||||
|
RUN adduser --disabled-password --gecos "" --uid 1000 bot \
|
||||||
|
&& mkdir -p /app/data \
|
||||||
|
&& chown bot:bot /app/data
|
||||||
|
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
COPY --chown=bot:bot bot ./bot
|
||||||
|
|
||||||
|
USER bot
|
||||||
|
|
||||||
|
CMD ["python", "-m", "bot"]
|
||||||
28
README.md
28
README.md
|
|
@ -70,3 +70,31 @@ python -m bot
|
||||||
Рядом с `bot.db` могут появляться файлы `-wal` / `-shm` (режим WAL) — их тоже не нужно коммитить (`data/` в `.gitignore`).
|
Рядом с `bot.db` могут появляться файлы `-wal` / `-shm` (режим WAL) — их тоже не нужно коммитить (`data/` в `.gitignore`).
|
||||||
|
|
||||||
При старте бот проверяет `MANAGER_GROUP_ID`: супергруппа с Topics, бот — админ с правами Manage topics и Delete messages. При ошибке процесс завершится с понятным текстом в логе и stderr.
|
При старте бот проверяет `MANAGER_GROUP_ID`: супергруппа с Topics, бот — админ с правами Manage topics и Delete messages. При ошибке процесс завершится с понятным текстом в логе и stderr.
|
||||||
|
|
||||||
|
## Деплой на VPS (Docker)
|
||||||
|
|
||||||
|
Нужны Docker и Docker Compose. Бот работает через long-polling — открывать порты не нужно, достаточно исходящего HTTPS к `api.telegram.org`. Запускайте **один** контейнер на один `BOT_TOKEN`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <repo-url> && cd 428th-exchange-bot
|
||||||
|
cp .env.example .env
|
||||||
|
# заполните BOT_TOKEN и MANAGER_GROUP_ID
|
||||||
|
|
||||||
|
mkdir -p data
|
||||||
|
# каталог должен быть доступен пользователю контейнера (uid 1000)
|
||||||
|
sudo chown -R 1000:1000 data
|
||||||
|
|
||||||
|
docker compose up -d --build
|
||||||
|
docker compose logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
SQLite лежит в `./data` на хосте (`DATABASE_PATH=/app/data/bot.db` внутри контейнера). Бэкапьте эту папку (вместе с `-wal` / `-shm`, если они есть).
|
||||||
|
|
||||||
|
Полезные команды:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose ps
|
||||||
|
docker compose restart
|
||||||
|
docker compose down # остановить без удаления ./data
|
||||||
|
docker compose up -d --build # обновить код после git pull
|
||||||
|
```
|
||||||
|
|
|
||||||
12
docker-compose.yml
Normal file
12
docker-compose.yml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
services:
|
||||||
|
bot:
|
||||||
|
build: .
|
||||||
|
container_name: exchange-bot
|
||||||
|
restart: unless-stopped
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
DATABASE_PATH: /app/data/bot.db
|
||||||
|
volumes:
|
||||||
|
- ./data:/app/data
|
||||||
|
# Long-polling: no published ports. Needs outbound HTTPS to api.telegram.org.
|
||||||
Loading…
Add table
Reference in a new issue