x-volumes: &volumes environment: XDG_CONFIG_HOME: /app volumes: - .env:/app/.env - cache-data:/app/bootstrap/cache:rw - storage-data:/app/storage:rw - vite-data:/app/public/build:rw - caddy-data:/app/caddy/data - caddy-config:/app/caddy/config services: nginx: image: ghcr.io/${GITHUB_PROJECT_NAME}/nginx:${IMAGE_TAG} restart: unless-stopped ports: - "80:80" application: image: ghcr.io/${GITHUB_PROJECT_NAME}/application:${IMAGE_TAG} <<: *volumes restart: unless-stopped command: php /app/artisan octane:start --caddyfile=Caddyfile --server=frankenphp --host=0.0.0.0 --port=9000 --max-requests=500 depends_on: postgres: condition: service_healthy redis: condition: service_healthy reverb: image: ghcr.io/${GITHUB_PROJECT_NAME}/cli:${IMAGE_TAG} <<: *volumes restart: unless-stopped command: php /app/artisan reverb:start --host=0.0.0.0 --port=${REVERB_PORT} horizon: image: ghcr.io/${GITHUB_PROJECT_NAME}/cli:${IMAGE_TAG} <<: *volumes restart: unless-stopped command: php /app/artisan horizon healthcheck: test: php artisan horizon:status interval: 2s timeout: 5s start_period: 2s depends_on: postgres: condition: service_healthy redis: condition: service_healthy cron: image: ghcr.io/${GITHUB_PROJECT_NAME}/cli:${IMAGE_TAG} <<: *volumes restart: unless-stopped command: /usr/bin/supercronic /etc/supercronic/laravel healthcheck: test: /usr/bin/supercronic -test /etc/supercronic/laravel interval: 2s timeout: 5s start_period: 2s depends_on: postgres: condition: service_healthy redis: condition: service_healthy laravel-optimize: image: ghcr.io/${GITHUB_PROJECT_NAME}/cli:${IMAGE_TAG} <<: *volumes restart: no command: bash -c "php artisan optimize && php artisan migrate --force" depends_on: application: condition: service_healthy postgres: condition: service_healthy npm-build: image: ghcr.io/${GITHUB_PROJECT_NAME}/cli:${IMAGE_TAG} <<: *volumes command: npm run build restart: no php-cli: image: ghcr.io/${GITHUB_PROJECT_NAME}/cli:${IMAGE_TAG} <<: *volumes restart: no volumes: cache-data: { } storage-data: { } vite-data: { } caddy-data: { } caddy-config: { }