version: '3.8' services: # MySQL Database db: image: mysql:8.0 container_name: laravel-mysql restart: unless-stopped environment: MYSQL_DATABASE: laravel MYSQL_ROOT_PASSWORD: root_password MYSQL_USER: laravel_user MYSQL_PASSWORD: laravel_password volumes: - mysql_data:/var/lib/mysql ports: - "3306:3306" networks: - laravel-network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 start_period: 30s # Laravel Application app: build: context: . dockerfile: Dockerfile container_name: laravel-app restart: unless-stopped volumes: - ./src:/var/www/html depends_on: db: condition: service_healthy networks: - laravel-network healthcheck: test: ["CMD", "php", "-v"] interval: 10s timeout: 5s retries: 5 command: > sh -c "php-fpm" # Nginx Web Server web: image: nginx:alpine container_name: laravel-nginx restart: unless-stopped ports: - "80:80" volumes: - ./src:/var/www/html - ./nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: app: condition: service_healthy networks: - laravel-network networks: laravel-network: driver: bridge volumes: mysql_data: