--- services: db: image: postgres:17 networks: - backend-network volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped environment: POSTGRES_USER: ${CHITAI_POSTGRES_USER} POSTGRES_PASSWORD: ${CHITAI_POSTGRES_PASSWORD} POSTGRES_DB: ${CHITAI_POSTGRES_DB} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${CHITAI_POSTGRES_USER} -d ${CHITAI_POSTGRES_DB}"] interval: 10s timeout: 3s retries: 5 backend: image: git.jaroszew.ski/patrick/chitai-backend:${CHITAI_VERSION:-latest} # Only used when the image above is not present locally. Run `docker compose build` to # build from source instead of pulling a release. build: ./backend networks: - backend-network - frontend-network ports: - "8000:8000" volumes: # Bind mount your libraries into /app/libraries/ # - ./books:/app/libraries/books # ... # Or bind mount entire libraries folder - ./libraries:/app/libraries # Mount book covers directory - book_covers:/app/covers restart: unless-stopped env_file: - .env depends_on: db: condition: service_healthy frontend: image: git.jaroszew.ski/patrick/chitai-frontend:${CHITAI_VERSION:-latest} build: ./frontend networks: - frontend-network ports: - "3000:3000" restart: unless-stopped environment: VITE_BACKEND_API_URL: ${CHITAI_API_URL} # Must match the URL the browser uses, or SvelteKit rejects form POSTs as cross-origin. ORIGIN: ${CHITAI_ORIGIN:-http://localhost:3000} depends_on: backend: condition: service_healthy volumes: postgres_data: book_covers: networks: frontend-network: backend-network: