Settings
The license is multi-line text. Pass it with
$(cat acme.fineparserlicense) or from a Kubernetes Secret. Docker .env files cannot carry multi-line values, so they do not work for this variable.
Telemetry has its own environment variables for inspecting the stream or sending a copy to your own collector. See Inspecting and copying the stream.
One configuration per container
Recognition settings cannot be changed per request. Every document a container receives is processed with the mode and languages it was started with. If different document sets need different settings, run one container per configuration and route each request to the container that matches. A reverse proxy or your own application code can make that decision from whatever you already know about the document, such as its source or file type.Storage
Results are written to the output directory as{jobId}/{name}, next to a small job database that tracks every job. The image declares /app/output as a volume. Mount a named volume or a host directory there, because without one Docker creates an anonymous volume and results are lost when the container is removed.
/app/output must be writable by it.
One container per output directory. The job database is locked while open, so a second container pointed at the same volume refuses to start. If you run several containers, give each its own volume.
Uploads are kept in the scratch directory only while they wait for recognition and are deleted as soon as it finishes. Nothing in the scratch directory outlives a job, so it does not need a volume.
Stopping the container
Give the container a stop timeout of 60 seconds. On a clean stop FineParser lets in-flight requests finish, flushes telemetry, and exits. Docker’s default of 10 seconds cuts that short. Use--stop-timeout 60 with docker run, or terminationGracePeriodSeconds: 60 in Kubernetes. See Restarts and shutdown for what happens to jobs that are queued or running at the time.
Networking
FineParser listens on port 8080 inside the container. Publish that port to your host with-p HOST:CONTAINER so you can send requests to it. -p 8080:8080 makes the API reachable on host port 8080 from any machine on the network, and -p 127.0.0.1:9000:8080 limits it to localhost on port 9000. See Published ports in the Docker documentation for the full syntax.
Confirming the license
In server mode, call/healthz. A licensed container reports ready: true:
metering ready for instance … line in the container output before the page count.
Without a license, both modes refuse to work. The server reports unhealthy and processes nothing:
