services: app: image: laravel_frankenphp build: context: . dockerfile: docker/Dockerfile container_name: laravel_frankenphp restart: unless-stopped working_dir: /var/www user: "${UID:-1000}:${GID:-1000}" volumes: - ./laravel:/var/www - ./docker/Caddyfile:/etc/frankenphp/Caddyfile - caddy_data:/data ports: - "127.0.0.1:8003:80" # - "8443:443" - "127.0.0.1:5173:5173" depends_on: mariadb: condition: service_healthy networks: - laravel_network mariadb: image: mariadb:11.7 container_name: laravel_mariadb restart: unless-stopped ports: - "127.0.0.1:3306:3306" environment: MARIADB_ROOT_PASSWORD: secret MARIADB_DATABASE: laravel MARIADB_USER: laravel MARIADB_PASSWORD: secret volumes: # - ./docker/mariadb/data:/var/lib/mysql - mariadb_data:/var/lib/mysql # - ./docker/my.cnf:/etc/mysql/conf.d/my.cnf networks: - laravel_network healthcheck: test: [ "CMD", "mariadb-admin", "ping", "-h", "localhost", "-u", "root", "-psecret" ] timeout: 20s retries: 10 start_period: 30s phpmyadmin: image: phpmyadmin/phpmyadmin container_name: laravel_phpmyadmin restart: unless-stopped ports: - "127.0.0.1:6969:80" environment: PMA_HOST: mariadb PMA_PORT: 3306 PMA_USER: laravel PMA_PASSWORD: secret PMA_ARBITRARY: 1 depends_on: mariadb: condition: service_healthy networks: - laravel_network queue: image: laravel_frankenphp container_name: laravel_queue working_dir: /var/www restart: unless-stopped command: php artisan queue:work --verbose --tries=3 --sleep=3 healthcheck: test: [ "CMD", "php", "artisan", "queue:monitor", "default" ] interval: 30s timeout: 10s retries: 3 start_period: 60s volumes: - ./laravel:/var/www depends_on: mariadb: condition: service_healthy networks: - laravel_network schedule: image: laravel_frankenphp container_name: laravel_schedule restart: unless-stopped working_dir: /var/www user: "${UID:-1000}:${GID:-1000}" volumes: - ./laravel:/var/www - ./docker/cron:/etc/cron.d:ro command: - "go-crond" - "--default-user=${UID:-1000}" - "--allow-unprivileged" - "--include=/etc/cron.d" - "--verbose" healthcheck: test: [ "CMD", "pgrep", "-f", "go-crond" ] interval: 30s timeout: 10s retries: 3 start_period: 40s depends_on: - app networks: - laravel_network networks: laravel_network: driver: bridge volumes: caddy_data: mariadb_data: