# The Old Fitz — compose for any Docker host (test or production). # # The site itself is baked into the image (see Dockerfile); the host only # holds state. Expected layout, one folder per site: # theoldfitz/ # docker-compose.yaml (this file) # .env (FITZ_IMAGE, and PROXY_NETWORK if not "proxy") # config/config.php (live secrets — never in the image) # data/ (fitz.sqlite + cache/ — never in the image) # # Deploy: `docker compose pull && docker compose up -d`. # Manual fallback from a checkout of the repo: `docker compose up -d --build`. # # First run: create data/ and `chown 33:33 data` (www-data in the image). # Copy config.example.php to config/config.php, fill it in, and make it # readable by www-data (`chown root:33` + `chmod 640`). Then create the # first admin with bin/create-user.php (see its header). # # The CasaOS dev host keeps its own copy of this file in the CasaOS app # settings, with CasaOS paths and its x-casaos block. name: the-old-fitz networks: proxy: external: true # The reverse proxy's Docker network (NPM or Caddy). Set PROXY_NETWORK # in .env if it isn't called "proxy". name: ${PROXY_NETWORK:-proxy} services: the-old-fitz: # Servers set FITZ_IMAGE in .env to the registry image, e.g. # gitea.example.com/david/the-old-fitz:latest. Unset, it falls back to a # local tag so `up --build` works from a checkout. image: ${FITZ_IMAGE:-the-old-fitz:local} build: . container_name: the-old-fitz restart: unless-stopped networks: - proxy volumes: # Database and cache live outside the web root so Apache can't serve # them, and outside the image so deploys never touch them. - type: bind source: ./data target: /var/www/data # Config is mounted as a directory, not a single file: a single-file # bind mount pins the inode, so an editor that saves by replacing the # file leaves the container reading the old copy until a restart. - type: bind source: ./config target: /var/www/config read_only: true environment: - TZ=America/Indiana/Indianapolis - FITZ_DB_PATH=/var/www/data/fitz.sqlite - FITZ_CACHE_DIR=/var/www/data/cache - FITZ_CONFIG_PATH=/var/www/config/config.php # Cap container logs so PHP's error log can't slowly fill the disk. logging: driver: json-file options: max-size: 10m max-file: "3"