services: 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 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 mailhog: image: 'mailhog/mailhog:latest' ports: - '${FORWARD_MAILHOG_PORT:-1025}:1025' - '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025' networks: - sail php: profiles: - full build: context: . dockerfile: Dockerfile ports: - '8000:8000' volumes: - '.:/app' - './vendor:/app/vendor' - './node_modules:/app/node_modules' env_file: - .env environment: - DB_HOST=mysql - DB_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 networks: - sail depends_on: mysql: condition: service_healthy redis: condition: service_healthy restart: unless-stopped command: php artisan serve --host=0.0.0.0 --port=8000 networks: sail: driver: bridge volumes: sail-mysql: driver: local sail-redis: driver: local