x-env: &env DATABASE_URI: "mariadb+pymysql://bunkerweb:secret@bw-db:3306/db" LOG_LEVEL: "info" CUSTOM_LOG_LEVEL: "debug" USE_REDIS: "yes" REDIS_HOST: "redis" services: bunkerweb: build: context: ../.. dockerfile: ./src/bw/Dockerfile args: SKIP_MINIFY: "yes" ports: - 80:8080/tcp - 443:8443/tcp - 443:8443/udp environment: API_WHITELIST_IP: "127.0.0.0/24 10.20.30.0/24" restart: "unless-stopped" networks: bw-universe: aliases: - bunkerweb bw-services: aliases: - bunkerweb bw-scheduler: build: context: ../.. dockerfile: ./src/scheduler/Dockerfile depends_on: - bunkerweb volumes: - bw-storage:/data - ./configs/server-http/hello.conf:/data/configs/server-http/app1.example.com/hello.conf:ro environment: <<: *env BUNKERWEB_INSTANCES: "bunkerweb" SERVER_NAME: "api.example.com app1.example.com" MULTISITE: "yes" API_WHITELIST_IP: "127.0.0.0/24 10.20.30.0/24" USE_BUNKERNET: "no" USE_BLACKLIST: "no" USE_WHITELIST: "no" SEND_ANONYMOUS_REPORT: "no" SERVE_FILES: "no" DISABLE_DEFAULT_SERVER: "yes" SESSIONS_CHECK_IP: "no" EXTERNAL_PLUGIN_URLS: "https://github.com/bunkerity/bunkerweb-plugins/archive/refs/heads/dev.zip" api.example.com_USE_TEMPLATE: "api" api.example.com_GENERATE_SELF_SIGNED_SSL: "yes" api.example.com_USE_REVERSE_PROXY: "yes" api.example.com_REVERSE_PROXY_URL: "/" api.example.com_REVERSE_PROXY_HOST: "http://bw-api:8888" app1.example.com_USE_REVERSE_PROXY: "yes" app1.example.com_REVERSE_PROXY_URL: "/" app1.example.com_REVERSE_PROXY_HOST: "http://app1:8080" app1.example.com_USE_CLIENT_CACHE: "yes" app1.example.com_USE_GZIP: "yes" app1.example.com_CUSTOM_CONF_MODSEC_CRS_reqbody-suppress: "SecRuleRemoveById 200002" restart: "unless-stopped" networks: bw-universe: aliases: - bw-scheduler bw-db: aliases: - bw-scheduler bw-api: build: context: ../.. dockerfile: ./src/api/Dockerfile ports: - 8888:8888 volumes: - ../../src/api/app:/usr/share/bunkerweb/api/app:ro - ../../src/api/utils:/usr/share/bunkerweb/api/utils:ro environment: <<: *env API_USERNAME: "admin" API_PASSWORD: "P@ssw0rd" FORWARDED_ALLOW_IPS: "*" DEBUG: "1" MAX_WORKERS: "1" MAX_THREADS: "4" restart: "unless-stopped" networks: bw-universe: aliases: - bw-api bw-db: aliases: - bw-api bw-db: image: mariadb:11 command: --max-allowed-packet=67108864 environment: MYSQL_RANDOM_ROOT_PASSWORD: "yes" MYSQL_DATABASE: "db" MYSQL_USER: "bunkerweb" MYSQL_PASSWORD: "secret" volumes: - bw-data:/var/lib/mysql restart: "unless-stopped" networks: bw-db: aliases: - bw-db redis: # Redis service for the persistence of reports/bans/stats image: redis:8-alpine command: > redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru --save 60 1000 --appendonly yes volumes: - redis-data:/data restart: "unless-stopped" networks: - bw-universe app1: image: bunkerity/bunkerweb-hello:v1.0 restart: "unless-stopped" networks: bw-services: aliases: - app1 volumes: bw-storage: bw-data: redis-data: networks: bw-universe: name: bw-universe ipam: driver: default config: - subnet: 10.20.30.0/24 bw-services: name: bw-services bw-db: name: bw-db