savagedb_bot/docker-compose.yml

115 lines
2.9 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=${BOT_TOKEN}
- BOT_NAME=${BOT_NAME:-SalvageDB Bot}
- ADMIN_USER_ID=${ADMIN_USER_ID}
# Цены на услуги (в Telegram Stars)
- DECODE_PRICE=${DECODE_PRICE:-1}
- CHECK_PRICE=${CHECK_PRICE:-10}
- IMG_PRICE=${IMG_PRICE:-100}
# База данных Oracle
- db_user=${DB_USER}
- db_password=${DB_PASSWORD}
- db_dsn=${DB_DSN}
# Настройки приложения
- DEBUG=${DEBUG:-0}
- PYTHONUNBUFFERED=1
- TZ=${TIMEZONE:-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