Docker

NMRKit is containerized using Docker and distributed via Docker Hub.

Pull the image

bash
docker pull nfdi4chem/nmrkit:latest        # production
docker pull nfdi4chem/nmrkit:dev-latest    # development

The root docker-compose.yml starts the full stack:

bash
cp env.template .env
docker compose up -d
ServiceContainerPortPurpose
webnmrkit-api8080→80FastAPI application
nmr-load-savenmr-converternmr-cli spectra parsing & prediction
nmr-respredictnmr-respredictResidual NMR prediction (future)
pgsql5433→5432PostgreSQL + RDKit cartridge
redis6380→6379Cache
minio9002, 8901Object storage
prometheusnmrkit_prometheus9090Metrics
grafananmrkit_grafana3000Dashboards

Open http://localhost:8080/latest/docs for the Scalar API reference.

Volumes

  • ./app is mounted into the API container for live code reload during development
  • /var/run/docker.sock allows the API to docker exec into nmr-converter
  • shared-data passes files between API, nmr-cli, and nmr-respredict containers

Standalone container

For a minimal deployment with an external PostgreSQL instance:

bash
# Start PostgreSQL with RDKit cartridge
docker run -d --name postgres \
  -e POSTGRES_PASSWORD=password \
  -e POSTGRES_USER=nmrkit \
  -p 5432:5432 \
  informaticsmatters/rdkit-cartridge-debian:latest

# Start NMRKit API
docker run -d -p 8080:80 --name nmrkit \
  -e POSTGRES_PASSWORD=password \
  -e POSTGRES_USER=nmrkit \
  -e POSTGRES_SERVER=postgres \
  -e POSTGRES_DB=nmr_predict \
  --link postgres:postgres \
  nfdi4chem/nmrkit:latest

WARNING

Standalone mode does not include nmr-converter. Spectra parsing and prediction endpoints require the nmr-cli container — use Docker Compose instead.

Server deployments (Traefik)

For hosted dev/prod environments, use the ops compose files:

bash
# Development
docker compose -f ops/docker-compose-dev.yml up -d

# Production
docker compose -f ops/docker-compose-prod.yml up -d

These configurations use Traefik as a reverse proxy:

EnvironmentHostImage tag
Developmentdev.nmrkit.nmrxiv.orgnfdi4chem/nmrkit:dev-latest
Productionnmrkit.nmrxiv.orgnfdi4chem/nmrkit:latest

Health checks

Docker Compose health checks hit the registration module:

GET http://localhost:80/latest/registration/health

See also