services: api: image: ${READABOOK_REGISTRY:-gitea.anthonybouteiller.ovh/blomios/readabook}/api:${READABOOK_TAG:-latest} environment: NODE_ENV: production PORT: "3000" HOST: 0.0.0.0 DATABASE_PATH: /data/readabook.sqlite STORAGE_DIR: /data/storage JWT_SECRET: ${JWT_SECRET:-dev-change-me-readabook} OPEN_LIBRARY_ENABLED: ${OPEN_LIBRARY_ENABLED:-true} LIBRARY_PATH_ALIASES: ${READABOOK_LIBRARY_ALIAS_FROM:-/library}=/library INITIAL_ADMIN_EMAIL: ${INITIAL_ADMIN_EMAIL:-admin@readabook.local} INITIAL_ADMIN_PASSWORD: ${INITIAL_ADMIN_PASSWORD:-readabook-admin-change-me} volumes: - ./data:/data - ${READABOOK_LIBRARY_HOST_PATH:-./data/library}:/library:ro healthcheck: test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3000/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"] interval: 10s timeout: 5s retries: 5 start_period: 10s web: image: ${READABOOK_REGISTRY:-gitea.anthonybouteiller.ovh/blomios/readabook}/web:${READABOOK_TAG:-latest} depends_on: api: condition: service_healthy ports: - "3000:80" healthcheck: test: ["CMD", "wget", "-qO-", "http://127.0.0.1/"] interval: 10s timeout: 5s retries: 5 start_period: 5s