services: laravel.test: build: context: './vendor/laravel/sail/runtimes/8.4' dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP}' MYSQL_CLIENT: mariadb-client image: 'sail-8.4/app' 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 - zitadel depends_on: - mariadb - redis mariadb: image: 'mariadb:11' ports: - '${FORWARD_DB_PORT:-3306}:3306' environment: MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}' MYSQL_ROOT_HOST: '%' MYSQL_DATABASE: '${DB_DATABASE}' MYSQL_USER: '${DB_USERNAME}' MYSQL_PASSWORD: '${DB_PASSWORD}' MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' volumes: - 'sail-mariadb:/var/lib/mysql' - './vendor/laravel/sail/database/mariadb/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' networks: - sail healthcheck: test: - CMD - healthcheck.sh - '--connect' - '--innodb_initialized' 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 zitadel: restart: 'always' networks: - 'zitadel' - sail image: 'ghcr.io/zitadel/zitadel:latest' command: 'start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --tlsMode disabled' environment: ZITADEL_DATABASE_POSTGRES_HOST: db ZITADEL_DATABASE_POSTGRES_PORT: 5432 ZITADEL_DATABASE_POSTGRES_DATABASE: zitadel ZITADEL_DATABASE_POSTGRES_USER_USERNAME: zitadel ZITADEL_DATABASE_POSTGRES_USER_PASSWORD: zitadel ZITADEL_DATABASE_POSTGRES_USER_SSL_MODE: disable ZITADEL_DATABASE_POSTGRES_ADMIN_USERNAME: postgres ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD: postgres ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODE: disable ZITADEL_EXTERNALSECURE: false depends_on: db: condition: 'service_healthy' ports: - '8080:8080' db: restart: 'always' image: postgres:17-alpine environment: PGUSER: postgres POSTGRES_PASSWORD: postgres volumes: - 'postgres-data:/var/lib/postgresql/data' networks: - 'zitadel' healthcheck: test: [ "CMD-SHELL", "pg_isready", "-d", "zitadel", "-U", "postgres" ] interval: '10s' timeout: '30s' retries: 5 start_period: '20s' networks: sail: driver: bridge zitadel: volumes: sail-mariadb: driver: local sail-redis: driver: local zitadel-config: driver: local postgres-data: driver: local