# The image comes from GHCR (built by .github/workflows/docker.yml on every # release tag). `build:` stays as the fallback: `docker compose up -d --build` # makes the same image from this checkout when the registry is out of reach. services: app: image: ghcr.io/solutionmax/pharos:${PHAROS_VERSION:-latest} build: context: . args: VERSION: ${PHAROS_VERSION:-0.5.6} ports: - "${PHAROS_PORT:-8080}:80" environment: APP_ENV: production APP_DEBUG: "false" APP_URL: ${APP_URL:-http://localhost:8080} TRUSTED_PROXIES: ${TRUSTED_PROXIES:-} APP_KEY: ${APP_KEY:?run `php artisan key:generate --show` and put it in .env} DB_CONNECTION: sqlite DB_DATABASE: /var/www/html/database/database.sqlite PHAROS_LICENSE_PUBLIC_KEY: ${PHAROS_LICENSE_PUBLIC_KEY:-} volumes: - pharos-db:/var/www/html/database - pharos-storage:/var/www/html/storage restart: unless-stopped # Checks need a heartbeat of their own. On shared hosting this is one cron line; # here it is a second container sharing the same database volume. scheduler: image: ghcr.io/solutionmax/pharos:${PHAROS_VERSION:-latest} build: context: . args: VERSION: ${PHAROS_VERSION:-0.5.6} command: php artisan schedule:work environment: APP_ENV: production APP_KEY: ${APP_KEY:?} DB_CONNECTION: sqlite DB_DATABASE: /var/www/html/database/database.sqlite volumes: - pharos-db:/var/www/html/database - pharos-storage:/var/www/html/storage depends_on: app: condition: service_healthy restart: unless-stopped volumes: pharos-db: pharos-storage: