# Base compose: production-like. Both services, no host port mappings (NPM is the # only path to the web app; the editors reach PocketBase through an NPM subdomain). # Only PocketBase's data is a volume; everything else lives inside the images. # # For local development use the dev overlay on top, which adds host ports and builds # the web image from source: # docker compose -f compose.yaml -f compose.dev.yaml up --build # (The Rider run config "DevEnvironment" does exactly this with one click.) # # Startup order: PocketBase comes up first; once it reports healthy the web app # starts (depends_on -> service_healthy). services: eb-pocketbase: image: ghcr.io/muchobien/pocketbase:0.40.4 container_name: eb-pocketbase restart: unless-stopped environment: TZ: Europe/Berlin volumes: # The only state that must survive a restart or redeploy. - /mnt/user/appdata/pocketbase/pb_data:/pb_data healthcheck: # The image ships this endpoint; the web app waits for it to pass. test: ["CMD", "wget", "--spider", "-q", "http://localhost:8090/api/health"] interval: 5s timeout: 3s retries: 10 eb-web: image: gitea.anticarnist.de/tom/elternbeirat:latest container_name: eb-web restart: unless-stopped depends_on: eb-pocketbase: condition: service_healthy environment: ASPNETCORE_URLS: http://+:8080 TZ: Europe/Berlin # The web app reads content from PocketBase over the compose network. PocketBase__BaseUrl: http://eb-pocketbase:8090