name: investmoz-development services: app: build: context: ../../vendor/laravel/sail/runtimes/8.5 args: WWWGROUP: '${WWWGROUP:-1000}' NODE_VERSION: '24' POSTGRES_VERSION: '17' image: investmoz-development-php85 environment: &application WWWUSER: '${WWWUSER:-1000}' APP_ENV: local APP_DEBUG: 'false' APP_KEY: '${APP_KEY:?Generate the isolated development key first}' APP_URL: 'http://localhost:${PORTAL_PORT:-8088}' DB_CONNECTION: pgsql DB_HOST: postgres DB_PORT: '5432' DB_DATABASE: investmoz_development DB_USERNAME: investmoz DB_PASSWORD: '${DB_PASSWORD:?Generate a local database password first}' DB_URL: '' CACHE_STORE: database QUEUE_CONNECTION: database DB_QUEUE_RETRY_AFTER: '210' SESSION_DRIVER: database SESSION_SECURE_COOKIE: 'false' MAIL_MAILER: array PORTAL_NOTIFICATIONS_ENABLED: 'false' LOG_CHANNEL: stderr FILESYSTEM_DISK: local MALWARE_SCANNER: clamd CLAMD_HOST: clamav CLAMD_PORT: '3310' CLAMD_TIMEOUT_SECONDS: '120' CLAMD_MAX_SIGNATURE_AGE_HOURS: '48' CLAMD_MAX_FILE_BYTES: '20971520' CLAMD_MAX_STREAM_BYTES: '26214400' CLAMD_MAX_DECOMPRESSED_BYTES: '104857600' CLAMD_MAX_ARCHIVE_ENTRIES: '1000' volumes: - ../..:/var/www/html - ./runtime.env.example:/var/www/html/.env:ro - application-storage:/var/www/html/storage - application-cache:/var/www/html/bootstrap/cache depends_on: postgres: condition: service_healthy networks: - default - malware-private healthcheck: test: ['CMD', 'curl', '--fail', 'http://127.0.0.1/up'] interval: 15s timeout: 5s retries: 5 web: image: nginx:stable-alpine ports: - '127.0.0.1:${PORTAL_PORT:-8088}:80' volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro depends_on: app: condition: service_healthy queue: image: investmoz-development-php85 environment: <<: *application SUPERVISOR_PHP_COMMAND: '/usr/bin/php /var/www/html/artisan queue:work --sleep=3 --tries=3 --timeout=150' volumes: - ../..:/var/www/html - ./runtime.env.example:/var/www/html/.env:ro - application-storage:/var/www/html/storage - application-cache:/var/www/html/bootstrap/cache depends_on: app: condition: service_healthy networks: - default - malware-private postgres: image: postgis/postgis:17-3.5 environment: POSTGRES_DB: investmoz_development POSTGRES_USER: investmoz POSTGRES_PASSWORD: '${DB_PASSWORD:?Generate a local database password first}' volumes: - database:/var/lib/postgresql/data healthcheck: test: [ 'CMD-SHELL', 'pg_isready -U investmoz -d investmoz_development', ] interval: 5s timeout: 5s retries: 10 networks: - default clamav: image: clamav/clamav:1.5.4 environment: CLAMAV_NO_MILTERD: 'true' CLAMD_STARTUP_TIMEOUT: '1800' FRESHCLAM_CHECKS: '12' volumes: - clamav-database:/var/lib/clamav - ./clamd.conf:/etc/clamav/clamd.conf:ro mem_limit: 4g cpus: 2.0 logging: options: max-size: '10m' max-file: '3' healthcheck: test: ['CMD', 'clamdscan', '--ping=3'] interval: 30s timeout: 5s retries: 3 start_period: 30m networks: - malware-private networks: malware-private: driver: bridge volumes: database: application-storage: application-cache: clamav-database: