First /healthz call on a fresh container triggers Surya to fetch the text-recognition (1.34 GB) and detection (73 MB) models from HuggingFace. Without a volume they land in the container fs and vanish on every rebuild, which is every deploy. Mount named volumes for /root/.cache/datalab (Surya) and /root/.cache/huggingface. Rebuild now keeps /healthz warm. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
40 lines
1.2 KiB
YAML
40 lines
1.2 KiB
YAML
# InfoXtractor Docker Compose stack.
|
|
#
|
|
# Single service. Uses host networking so the container can reach:
|
|
# - Ollama at 127.0.0.1:11434
|
|
# - postgis at 127.0.0.1:5431 (bound to loopback only; security hardening)
|
|
# Both services are LAN-hardened on the host and never exposed publicly,
|
|
# so host-network access stays on-prem. This matches the `goldstein`
|
|
# container pattern on the same server.
|
|
#
|
|
# The GPU reservation block matches immich-ml / the shape Docker Compose
|
|
# expects for GPU allocation on this host.
|
|
|
|
services:
|
|
infoxtractor:
|
|
build: .
|
|
container_name: infoxtractor
|
|
network_mode: host
|
|
restart: always
|
|
env_file: .env
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: 1
|
|
capabilities: [gpu]
|
|
volumes:
|
|
# Persist Surya (datalab) + HuggingFace model caches so rebuilds don't
|
|
# re-download ~1.5 GB of weights every time.
|
|
- ix_surya_cache:/root/.cache/datalab
|
|
- ix_hf_cache:/root/.cache/huggingface
|
|
labels:
|
|
infrastructure.web_url: "http://192.168.68.42:8994"
|
|
backup.enable: "true"
|
|
backup.type: "postgres"
|
|
backup.name: "infoxtractor"
|
|
|
|
volumes:
|
|
ix_surya_cache:
|
|
ix_hf_cache:
|