Skip to main content
FineParser is configured once, when the container starts, with environment variables and command-line flags. Every setting has both forms and the flag wins when both are given. The settings hold for the life of the process.

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.
The container runs as a non-root user, so a host directory mounted at /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.
The container must be able to reach ABBYY’s license server. Without that outbound connection, FineParser does not parse documents. Allow the address ranges listed under Network requirements through your firewall or egress proxy. For environments with no outbound connectivity, see FineParser Enterprise.

Confirming the license

In server mode, call /healthz. A licensed container reports ready: true:
In CLI mode, look for the 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: