diff --git a/docker-compose.local.yml b/docker-compose.local.yml new file mode 100644 index 00000000..b21a85c6 --- /dev/null +++ b/docker-compose.local.yml @@ -0,0 +1,98 @@ +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 + 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 + 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 + # Данные приложения (для SQLite в случае переключения) + - ./data:/app/data:rw + - ./locales:/app/locales:rw + # Конфигурация приложения + # - ./app-config.json:/app/app-config.json:ro + # Timezone + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + # Логотип для сообщений + - ./vpn_logo.png:/app/vpn_logo.png:ro + ports: + - "${TRIBUTE_WEBHOOK_PORT:-8081}:8081" + - "${YOOKASSA_WEBHOOK_PORT:-8082}:8082" + networks: + - bot_network + healthcheck: + test: ["CMD-SHELL", "python -c 'import requests; requests.get(\"http://localhost:8081/health\", timeout=5)' || 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