services: mysql: image: mysql:8.0 container_name: mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: laravel MYSQL_USER: laravel MYSQL_PASSWORD: secret volumes: - mysql-data:/var/lib/mysql networks: - app-network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped laravel: build: context: . dockerfile: Dockerfile container_name: laravel user: "1000:1000" depends_on: mysql: condition: service_healthy volumes: - .:/var/www/html - /var/www/html/vendor networks: - app-network healthcheck: test: ["CMD", "pidof", "php-fpm"] interval: 10s timeout: 5s retries: 5 start_period: 30s restart: unless-stopped nginx: image: nginx:alpine container_name: nginx depends_on: laravel: condition: service_healthy ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - .:/var/www/html networks: - app-network restart: unless-stopped networks: app-network: driver: bridge volumes: mysql-data: