version: '3.8' services: # LittleShop Main Application littleshop: build: . image: littleshop:latest container_name: littleshop restart: unless-stopped environment: - ASPNETCORE_ENVIRONMENT=Hostinger - ASPNETCORE_URLS=http://+:8080 # BTCPay Configuration - pointing to Hostinger BTCPay - BTCPayServer__BaseUrl=https://thebankofdebbie.giize.com - BTCPayServer__ApiKey=${BTCPAY_API_KEY:-994589c8b514531f867dd24c83a02b6381a5f4a2} - BTCPayServer__StoreId=${BTCPAY_STORE_ID:-AoxXjM9NJT6P9C1MErkaawXaSchz8sFPYdQ9FyhmQz33} - BTCPayServer__WebhookSecret=${BTCPAY_WEBHOOK_SECRET} # Database - ConnectionStrings__DefaultConnection=Data Source=/app/data/littleshop.db # JWT - Jwt__Key=${JWT_SECRET_KEY:-YourSuperSecretKeyThatIsAtLeast32CharactersLong!} volumes: - littleshop_data:/app/data - littleshop_uploads:/app/wwwroot/uploads - littleshop_logs:/app/logs ports: - "8080:8080" networks: - littleshop-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s # TeleBot Telegram Bot telebot: build: context: . dockerfile: TeleBot/TeleBot/Dockerfile container_name: littleshop-telebot restart: unless-stopped environment: - DOTNET_ENVIRONMENT=Production - TZ=UTC # Telegram Bot Configuration - Telegram__BotToken=${TELEGRAM_BOT_TOKEN} - Telegram__AdminChatId=${TELEGRAM_ADMIN_CHAT_ID} - Telegram__UseWebhook=false # LittleShop API Configuration - pointing to local container - LittleShop__ApiUrl=http://littleshop:8080 - LittleShop__Username=${LITTLESHOP_USERNAME:-admin} - LittleShop__Password=${LITTLESHOP_PASSWORD:-admin} - LittleShop__UseTor=false - LittleShop__BrandName=${BRAND_NAME:-Little Shop} # Privacy Settings - Privacy__Mode=strict - Privacy__DataRetentionHours=24 - Privacy__SessionTimeoutMinutes=30 - Privacy__EnableAnalytics=false - Privacy__EphemeralByDefault=true - Privacy__EnableTor=false # Database Configuration - Database__ConnectionString=Filename=/app/data/telebot.db;Password=; - Database__EncryptionKey=${DATABASE_ENCRYPTION_KEY:-CHANGE_THIS_KEY_IN_PRODUCTION} # Features - Features__EnableQRCodes=true - Features__EnablePGPEncryption=true - Features__EnableDisappearingMessages=true # Redis (optional) - Redis__Enabled=${REDIS_ENABLED:-false} - Redis__ConnectionString=redis:6379 # Hangfire (optional) - Hangfire__Enabled=${HANGFIRE_ENABLED:-false} volumes: - telebot_data:/app/data - telebot_logs:/app/logs networks: - littleshop-network depends_on: - littleshop - redis healthcheck: test: ["CMD", "pgrep", "-f", "dotnet.*TeleBot"] interval: 30s timeout: 10s retries: 3 start_period: 60s # Redis Cache (Optional) redis: image: redis:7-alpine container_name: littleshop-redis restart: unless-stopped command: redis-server --requirepass ${REDIS_PASSWORD:-RedisPassword123} volumes: - redis_data:/data networks: - littleshop-network healthcheck: test: ["CMD", "redis-cli", "--raw", "incr", "ping"] interval: 30s timeout: 3s retries: 5 volumes: littleshop_data: driver: local littleshop_uploads: driver: local littleshop_logs: driver: local telebot_data: driver: local telebot_logs: driver: local redis_data: driver: local networks: littleshop-network: driver: bridge