- Full Telegram bot implementation for Lightning Jackpot - Commands: /start, /buy, /tickets, /wins, /address, /jackpot, /help - Lightning invoice generation with QR codes - Payment polling and confirmation notifications - User state management (Redis/in-memory fallback) - Group support with admin settings panel - Configurable draw announcements and reminders - Centralized messages for easy i18n - Docker configuration included
114 lines
3.1 KiB
YAML
114 lines
3.1 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
postgres:
|
|
image: postgres:14-alpine
|
|
container_name: lightning-lotto-db
|
|
environment:
|
|
POSTGRES_DB: lightning_lotto
|
|
POSTGRES_USER: lottery_user
|
|
POSTGRES_PASSWORD: lottery_password
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./back_end/src/database/schema.sql:/docker-entrypoint-initdb.d/schema.sql
|
|
ports:
|
|
- "5432:5432"
|
|
networks:
|
|
- lightning-lotto-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U lottery_user -d lightning_lotto"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: lightning-lotto-redis
|
|
ports:
|
|
- "6379:6379"
|
|
networks:
|
|
- lightning-lotto-network
|
|
volumes:
|
|
- redis_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
|
|
backend:
|
|
build:
|
|
context: ./back_end
|
|
dockerfile: Dockerfile
|
|
container_name: lightning-lotto-backend
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
APP_PORT: 3000
|
|
APP_BASE_URL: ${APP_BASE_URL:-http://localhost:3000}
|
|
FRONTEND_BASE_URL: ${FRONTEND_BASE_URL:-http://localhost:3001}
|
|
NODE_ENV: production
|
|
DATABASE_URL: postgresql://lottery_user:lottery_password@postgres:5432/lightning_lotto
|
|
LNBITS_API_BASE_URL: ${LNBITS_API_BASE_URL}
|
|
LNBITS_ADMIN_KEY: ${LNBITS_ADMIN_KEY}
|
|
LNBITS_WEBHOOK_SECRET: ${LNBITS_WEBHOOK_SECRET}
|
|
JWT_SECRET: ${JWT_SECRET}
|
|
ADMIN_API_KEY: ${ADMIN_API_KEY}
|
|
DEFAULT_TICKET_PRICE_SATS: ${DEFAULT_TICKET_PRICE_SATS:-1000}
|
|
DEFAULT_HOUSE_FEE_PERCENT: ${DEFAULT_HOUSE_FEE_PERCENT:-5}
|
|
DRAW_SCHEDULER_INTERVAL_SECONDS: 60
|
|
CYCLE_GENERATOR_INTERVAL_SECONDS: 300
|
|
ports:
|
|
- "3000:3000"
|
|
networks:
|
|
- lightning-lotto-network
|
|
restart: unless-stopped
|
|
|
|
frontend:
|
|
build:
|
|
context: ./front_end
|
|
dockerfile: Dockerfile
|
|
container_name: lightning-lotto-frontend
|
|
depends_on:
|
|
- backend
|
|
environment:
|
|
NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL:-http://localhost:3000}
|
|
NEXT_PUBLIC_APP_BASE_URL: ${NEXT_PUBLIC_APP_BASE_URL:-http://localhost:3001}
|
|
ports:
|
|
- "3001:3000"
|
|
networks:
|
|
- lightning-lotto-network
|
|
restart: unless-stopped
|
|
|
|
telegram-bot:
|
|
build:
|
|
context: ./telegram_bot
|
|
dockerfile: Dockerfile
|
|
container_name: lightning-lotto-telegram-bot
|
|
depends_on:
|
|
- backend
|
|
- redis
|
|
environment:
|
|
TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
|
|
API_BASE_URL: http://backend:3000
|
|
FRONTEND_BASE_URL: ${FRONTEND_BASE_URL:-http://localhost:3001}
|
|
REDIS_URL: redis://redis:6379
|
|
MAX_TICKETS_PER_PURCHASE: ${MAX_TICKETS_PER_PURCHASE:-100}
|
|
PAYMENT_POLL_INTERVAL_MS: ${PAYMENT_POLL_INTERVAL_MS:-5000}
|
|
PAYMENT_POLL_TIMEOUT_MS: ${PAYMENT_POLL_TIMEOUT_MS:-900000}
|
|
LOG_LEVEL: ${LOG_LEVEL:-info}
|
|
NODE_ENV: production
|
|
networks:
|
|
- lightning-lotto-network
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
postgres_data:
|
|
redis_data:
|
|
|
|
networks:
|
|
lightning-lotto-network:
|
|
driver: bridge
|