services: nginx: image: nginx:1.27-alpine ports: - "${HTTP_PORT:-8080}:80" volumes: - .:/var/www/html:ro - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro depends_on: php: condition: service_started phpmyadmin: condition: service_started networks: - app php: build: context: . dockerfile: docker/php/Dockerfile volumes: - .:/var/www/html - laravel_vendor:/var/www/html/vendor env_file: - docker/app.env environment: APP_ENV: "${APP_ENV:-local}" depends_on: mysql: condition: service_healthy redis: condition: service_started networks: - app queue: build: context: . dockerfile: docker/php/Dockerfile command: > php artisan queue:work redis --sleep=3 --tries=3 --max-time=3600 volumes: - .:/var/www/html - laravel_vendor:/var/www/html/vendor env_file: - docker/app.env depends_on: php: condition: service_started mysql: condition: service_healthy redis: condition: service_started networks: - app restart: unless-stopped mysql: image: mysql:8.0 env_file: - docker/app.env volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p\"$$MYSQL_ROOT_PASSWORD\" || exit 1"] interval: 5s timeout: 5s retries: 15 start_period: 30s networks: - app redis: image: redis:7-alpine command: redis-server --appendonly yes volumes: - redis_data:/data networks: - app phpmyadmin: image: phpmyadmin:5-apache env_file: - docker/app.env environment: PMA_HOST: mysql depends_on: mysql: condition: service_healthy networks: - app volumes: laravel_vendor: mysql_data: redis_data: networks: app: driver: bridge