services: traefik: image: 'traefik:v3.0' command: - '--api.insecure=true' - '--providers.docker=true' - '--providers.docker.exposedbydefault=false' - '--providers.file.directory=/etc/traefik/dynamic' - '--providers.file.watch=true' - '--entrypoints.web.address=:80' - '--entrypoints.websecure.address=:443' - '--log.level=INFO' ports: - '80:80' - '443:443' - '8080:8080' volumes: - '/var/run/docker.sock:/var/run/docker.sock:ro' - './traefik/dynamic:/etc/traefik/dynamic:ro' - './traefik/certs:/etc/traefik/certs:ro' networks: - sail extra_hosts: - 'host.docker.internal:host-gateway' mysql: image: 'mysql/mysql-server:8.0' ports: - '${FORWARD_DB_PORT:-3307}: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: 1 MYSQL_EXTRA_OPTIONS: '${MYSQL_EXTRA_OPTIONS}' volumes: - 'sail-mysql:/var/lib/mysql' - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' networks: - sail healthcheck: test: - CMD - mysqladmin - ping - '-p${DB_PASSWORD}' retries: 3 timeout: 5s redis: image: 'redis:alpine' ports: - '${FORWARD_REDIS_PORT:-6380}:6379' volumes: - 'sail-redis:/data' networks: - sail healthcheck: test: - CMD - redis-cli - ping retries: 3 timeout: 5s networks: sail: driver: bridge volumes: sail-mysql: driver: local sail-redis: driver: local