services: app: image: ${IMAGE} container_name: postcard restart: unless-stopped pull_policy: always ports: - "${HOST_PORT:-3098}:3098" environment: - TTL_HOURS=${TTL_HOURS:-72} - MAX_UPLOAD_BYTES=${MAX_UPLOAD_BYTES:-20971520} - RATE_LIMIT_PER_HOUR=${RATE_LIMIT_PER_HOUR:-30} # Day-context source for caption drafting — see README. Left unset, # captions fall back to generic postcard-voice lines. - DAY_SUMMARY_URL=${DAY_SUMMARY_URL:-} # Reverse-geocoding endpoint for the stamp corner's location line. # Defaults to the public Nominatim instance if unset. - NOMINATIM_URL=${NOMINATIM_URL:-} volumes: # Named volume, not a bind mount into the build context — the SQLite # db and image blobs live here and must survive image redeploys. - postcard-data:/app/data volumes: postcard-data: