Files
new_lottery_bot/docker-compose.yml
Andrew K. Choi 71b91bf9bb feat: добавлена Docker инфраструктура для продакшн-развертывания
Добавлено:
- Обновлен docker-compose.yml для production (упрощен, удален Redis/pgAdmin)
- .env.prod.example - шаблон конфигурации для продакшн
- deploy.sh - скрипт автоматического развертывания
- DOCKER_DEPLOY.md - полная документация по развертыванию

Makefile команды:
- docker-setup - первоначальная настройка
- docker-build/up/down - управление контейнерами
- docker-logs/logs-db - просмотр логов
- docker-db-migrate/backup/restore - работа с БД
- docker-deploy - полное автоматическое развертывание

Использование:
1. make docker-setup (создаст .env.prod)
2. Отредактировать .env.prod
3. make docker-deploy (автоматическое развертывание)
Или: ./deploy.sh
2025-11-17 09:42:23 +09:00

66 lines
1.5 KiB
YAML

# Docker Compose для продакшн-развертывания
version: '3.8'
services:
# Telegram Bot
bot:
build:
context: .
dockerfile: Dockerfile
container_name: lottery_bot
restart: unless-stopped
env_file:
- .env.prod
environment:
- DATABASE_URL=${DATABASE_URL}
- BOT_TOKEN=${BOT_TOKEN}
- ADMIN_IDS=${ADMIN_IDS}
- LOG_LEVEL=${LOG_LEVEL:-INFO}
volumes:
- ./logs:/app/logs
- bot_data:/app/data
networks:
- lottery_network
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "python", "-c", "import sys; sys.exit(0)"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
# PostgreSQL Database
db:
image: postgres:15-alpine
container_name: lottery_db
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-lottery_bot_db}
POSTGRES_USER: ${POSTGRES_USER:-lottery_user}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- lottery_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-lottery_user} -d ${POSTGRES_DB:-lottery_bot_db}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
volumes:
postgres_data:
driver: local
bot_data:
driver: local
networks:
lottery_network:
driver: bridge