services: laravel.test: # Apple Silicon / OrbStack: Puppeteer's Chrome must match container arch. # amd64 emulation avoids linux_arm + linux64 chrome-headless-shell mismatch. platform: linux/amd64 build: context: "./vendor/laravel/sail/runtimes/8.4" dockerfile: Dockerfile args: WWWGROUP: "${WWWGROUP}" image: "sail-8.4/app" extra_hosts: - "host.docker.internal:host-gateway" ports: - "${APP_PORT:-80}:80" - "${VITE_PORT:-5173}:${VITE_PORT:-5173}" environment: WWWUSER: "${WWWUSER}" LARAVEL_SAIL: 1 XDEBUG_MODE: "${SAIL_XDEBUG_MODE:-off}" XDEBUG_CONFIG: "${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}" IGNITION_LOCAL_SITES_PATH: "${PWD}" volumes: - ".:/var/www/html" networks: - sail depends_on: - pgsql - redis - memcached - mailpit pgsql: image: "postgres:17-alpine" ports: - "${FORWARD_DB_PORT:-5432}:5432" environment: PGPASSWORD: "${DB_PASSWORD:-secret}" POSTGRES_DB: "${DB_DATABASE}" POSTGRES_USER: "${DB_USERNAME}" POSTGRES_PASSWORD: "${DB_PASSWORD:-secret}" volumes: - "sail-pgsql:/var/lib/postgresql/data" - "./vendor/laravel/sail/database/pgsql/create-testing-database.sql:/docker-entrypoint-initdb.d/10-create-testing-database.sql" networks: - sail healthcheck: test: - CMD - pg_isready - "-q" - "-d" - "${DB_DATABASE}" - "-U" - "${DB_USERNAME}" retries: 3 timeout: 5s redis: image: "redis:alpine" ports: - "${FORWARD_REDIS_PORT:-6379}:6379" volumes: - "sail-redis:/data" networks: - sail healthcheck: test: - CMD - redis-cli - ping retries: 3 timeout: 5s memcached: image: "memcached:alpine" ports: - "${FORWARD_MEMCACHED_PORT:-11211}:11211" networks: - sail mailpit: image: "axllent/mailpit:latest" ports: - "${FORWARD_MAILPIT_PORT:-1025}:1025" - "${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025" networks: - sail networks: sail: driver: bridge volumes: sail-pgsql: driver: local sail-redis: driver: local