services: postgres: image: postgres:15-alpine container_name: remnawave_bot_db restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-remnawave_bot} POSTGRES_USER: ${POSTGRES_USER:-remnawave_user} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-secure_password_123} POSTGRES_INITDB_ARGS: '--encoding=UTF8 --locale=C' volumes: - postgres_data:/var/lib/postgresql/data networks: - bot_network - remnawave-network # Подключаем к сети панели healthcheck: test: [ 'CMD-SHELL', 'pg_isready -U ${POSTGRES_USER:-remnawave_user} -d ${POSTGRES_DB:-remnawave_bot}', ] interval: 30s timeout: 5s retries: 5 start_period: 30s redis: image: redis:7-alpine container_name: remnawave_bot_redis restart: unless-stopped command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru volumes: - redis_data:/data networks: - bot_network - remnawave-network # Подключаем к сети панели healthcheck: test: ['CMD', 'redis-cli', 'ping'] interval: 30s timeout: 10s retries: 3 bot: build: . container_name: remnawave_bot restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_healthy env_file: - .env environment: DOCKER_ENV: 'true' DATABASE_MODE: 'auto' POSTGRES_HOST: 'postgres' POSTGRES_PORT: '5432' POSTGRES_DB: '${POSTGRES_DB:-remnawave_bot}' POSTGRES_USER: '${POSTGRES_USER:-remnawave_user}' POSTGRES_PASSWORD: '${POSTGRES_PASSWORD:-secure_password_123}' REDIS_URL: 'redis://redis:6379/0' TZ: 'Europe/Moscow' LOCALES_PATH: '${LOCALES_PATH:-/app/locales}' volumes: - ./logs:/app/logs:rw - ./data:/app/data:rw - ./locales:/app/locales:rw - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro - ./vpn_logo.png:/app/vpn_logo.png:ro ports: - '${WEB_API_PORT:-8080}:8080' networks: - bot_network - remnawave-network # Подключаем к сети панели healthcheck: test: [ 'CMD-SHELL', 'python -c "import requests, os; requests.get(''http://localhost:8080/health'', headers={''X-API-Key'': os.environ.get(''WEB_API_DEFAULT_TOKEN'')}, timeout=5) or exit(1)"', ] interval: 60s timeout: 10s retries: 3 start_period: 30s volumes: postgres_data: driver: local redis_data: driver: local networks: bot_network: driver: bridge ipam: config: - subnet: 172.20.0.0/16 gateway: 172.20.0.1 driver_opts: com.docker.network.driver.mtu: 1350 remnawave-network: name: remnawave-network external: true # Используем существующую сеть панели