services: api: build: context: . dockerfile: Dockerfile 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 - /home/anthony/Documents/Projects/ReadaBook/Books:/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: build: context: . dockerfile: apps/web/Dockerfile 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