services: mysql: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: laravel_db volumes: - mysql-data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-prootpassword"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped laravel: build: context: . dockerfile: Dockerfile depends_on: mysql: condition: service_healthy volumes: - ./laravel:/var/www/html environment: - DB_HOST=mysql - DB_PORT=3306 - DB_DATABASE=laravel_db - DB_USERNAME=root - DB_PASSWORD=rootpassword healthcheck: test: ["CMD", "pgrep", "php-fpm"] # Corrected to check PHP-FPM instead of relying on Nginx interval: 10s timeout: 5s retries: 5 restart: unless-stopped nginx: image: nginx:latest depends_on: laravel: condition: service_healthy ports: - "80:80" # Ensure Laravel is accessible on port 80 volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - ./laravel:/var/www/html restart: unless-stopped volumes: mysql-data: # services: # mysql: # image: mysql:latest # environment: # MYSQL_ROOT_PASSWORD: rootpassword # MYSQL_DATABASE: laravel_db # volumes: # - mysql-data:/var/lib/mysql # healthcheck: # test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] # interval: 10s # timeout: 5s # retries: 5 # restart: unless-stopped # laravel: # build: # context: . # dockerfile: Dockerfile # depends_on: # mysql: # condition: service_healthy # volumes: # - ./laravel:/var/www/html # environment: # - DB_HOST=mysql # - DB_PORT=3306 # - DB_DATABASE=laravel_db # - DB_USERNAME=root # - DB_PASSWORD=rootpassword # healthcheck: # test: ["CMD", "pgrep", "php-fpm"] # interval: 10s # timeout: 5s # retries: 5 # restart: unless-stopped # nginx: # image: nginx:latest # depends_on: # laravel: # condition: service_healthy # ports: # - "8080:80" # volumes: # - ./nginx.conf:/etc/nginx/conf.d/default.conf # - ./laravel:/var/www/html # restart: unless-stopped # volumes: # mysql-data: