From e120474b9dd8e9641e60c62dcd740651e856c589 Mon Sep 17 00:00:00 2001 From: virtus Date: Fri, 16 Jan 2026 19:39:45 +0700 Subject: [PATCH] feat: Add Docker Compose setup for the bot and PostgreSQL database, and update Dockerfile to expose port 8000 and unbuffer Python output. --- Dockerfile | 4 ++++ README.md | 41 +++++++++++++++++++++++++++++++++++++---- docker-compose.yml | 31 +++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile index 44fb13b..9c4d7ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,4 +14,8 @@ RUN useradd --create-home --shell /bin/bash app && \ chown -R app:app /app USER app +ENV PYTHONUNBUFFERED=1 + +EXPOSE 8000 + CMD ["uv", "run", "python", "main.py"] \ No newline at end of file diff --git a/README.md b/README.md index 81511c0..2a16408 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,40 @@ virtus-bot/ ``` ## Docker Support -Dự án hỗ trợ chạy bằng Docker. -```bash -docker-compose up --build -d -``` \ No newline at end of file + +Dự án hỗ trợ triển khai nhanh bằng Docker Compose với image đã được build sẵn. + +### Yêu cầu +- Docker +- Docker Compose + +### Cài đặt và chạy +1. Tạo file `.env` (nếu chưa có): + ```bash + cp CONFIG_EXAMPLE.md .env + # Hoặc tạo mới và điền các giá trị cần thiết + ``` + > **Lưu ý Database**: + > - Mặc định, bot sẽ kết nối tới Postgres container được tạo kèm trong `docker-compose.yml`. + > - Nếu bạn muốn dùng Database riêng (bên ngoài Docker hoặc host khác), hãy cấu hình biến `POSTGRES_URL` trong file `.env`. + > - Nếu dùng Database mặc định, bạn không cần sửa `POSTGRES_URL`. + +2. Chạy ứng dụng: + ```bash + docker-compose up -d + ``` + +3. Cập nhật phiên bản mới nhất: + ```bash + docker-compose pull + docker-compose up -d + ``` + +4. Truy cập Admin Dashboard tại `http://localhost:8000`. + +### Cấu hình Docker Compose +File `docker-compose.yml` bao gồm: +- `bot`: Sử dụng image `fevirtus/virtus-bot:latest`. +- `db`: PostgreSQL 15 (chạy song song phục vụ cho bot). + - Dữ liệu được lưu tại volume `postgres_data`. + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2a1b5ea --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +version: '3.8' + +services: + bot: + image: fevirtus/virtus-bot:latest + container_name: virtus_bot + restart: always + ports: + - "8000:8000" + environment: + - BOT_TOKEN=${BOT_TOKEN} + - POSTGRES_URL=${POSTGRES_URL:-postgresql+asyncpg://virtus:password@db:5432/virtus_bot} + depends_on: + - db + command: uv run python main.py + + db: + image: postgres:15-alpine + container_name: virtus_db + restart: always + environment: + - POSTGRES_USER=${POSTGRES_USER:-virtus} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} + - POSTGRES_DB=${POSTGRES_DB:-virtus_bot} + volumes: + - postgres_data:/var/lib/postgresql/data + ports: + - "5432:5432" + +volumes: + postgres_data: