services: app: build: context: . dockerfile: Dockerfile restart: unless-stopped env_file: .env secrets: - origin_cert - origin_key ports: - "80:80" - "443:443" healthcheck: disable: true depends_on: db: condition: service_healthy volumes: - caddy_data:/data - storage:/app/storage/app - logs:/app/storage/logs db: image: postgres:17-alpine restart: unless-stopped environment: POSTGRES_USER: ${DB_USERNAME} POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: ${DB_DATABASE} volumes: - db_data:/var/lib/postgresql/data ports: - "127.0.0.1:5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME} -d ${DB_DATABASE}"] interval: 10s timeout: 5s retries: 5 scheduler: build: context: . dockerfile: Dockerfile restart: unless-stopped env_file: .env command: php artisan schedule:work healthcheck: disable: true depends_on: db: condition: service_healthy volumes: - storage:/app/storage/app - logs:/app/storage/logs queue: build: context: . dockerfile: Dockerfile restart: unless-stopped env_file: .env command: php artisan queue:work --sleep=3 --tries=3 --max-time=3600 --timeout=90 healthcheck: disable: true depends_on: db: condition: service_healthy volumes: - storage:/app/storage/app - logs:/app/storage/logs dozzle: image: amir20/dozzle:latest restart: unless-stopped environment: DOZZLE_USERNAME: ${DOZZLE_USERNAME} DOZZLE_PASSWORD: ${DOZZLE_PASSWORD} volumes: - /var/run/docker.sock:/var/run/docker.sock:ro ports: - "127.0.0.1:8888:8080" volumes: db_data: storage: caddy_data: logs: secrets: origin_cert: file: ./secrets/origin.pem origin_key: file: ./secrets/origin.key