savagedb_bot/docker-compose.yml

115 lines
2.8 KiB
YAML

version: '3.8'
services:
salvagedb-bot:
build:
context: .
dockerfile: Dockerfile
container_name: salvagedb-telegram-bot
restart: unless-stopped
# Переменные окружения
environment:
# Telegram Bot настройки
- BOT_TOKEN=your_bot_token_here
- BOT_NAME=SalvageDB Bot
- ADMIN_USER_ID=123456789
# Цены на услуги (в Telegram Stars)
- DECODE_PRICE=1
- CHECK_PRICE=10
- IMG_PRICE=100
# База данных Oracle
- db_user=your_db_user
- db_password=your_db_password
- db_dsn=localhost:1521/XEPDB1
# Настройки приложения
- DEBUG=0
- PYTHONUNBUFFERED=1
- TZ=UTC
# Монтируем volumes для логов и изображений
volumes:
- ./logs:/home/salvagebot/app/logs
- ./images:/home/salvagebot/app/images:ro # read-only для изображений
- ./data:/home/salvagebot/app/data # дополнительные данные если нужны
# Настройки сети
networks:
- salvagedb-network
# Ограничения ресурсов
deploy:
resources:
limits:
memory: 512M
cpus: '0.5'
reservations:
memory: 256M
cpus: '0.25'
# Политика перезапуска
restart: unless-stopped
# Зависимости (если есть другие сервисы)
depends_on: []
# Логирование
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# Проверка здоровья
healthcheck:
test: ["CMD", "python", "-c", "import sys; sys.exit(0)"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# Дополнительные сервисы (если понадобятся)
# nginx:
# image: nginx:alpine
# container_name: salvagedb-nginx
# restart: unless-stopped
# ports:
# - "80:80"
# - "443:443"
# volumes:
# - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
# - ./nginx/ssl:/etc/nginx/ssl:ro
# networks:
# - salvagedb-network
# depends_on:
# - salvagedb-bot
# redis:
# image: redis:7-alpine
# container_name: salvagedb-redis
# restart: unless-stopped
# volumes:
# - redis_data:/data
# networks:
# - salvagedb-network
# command: redis-server --appendonly yes
# Определяем сети
networks:
salvagedb-network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
# Определяем volumes
volumes:
# redis_data:
# driver: local
logs_data:
driver: local
images_data:
driver: local