NMRKit is containerized using Docker and distributed via Docker Hub.
docker pull nfdi4chem/nmrkit:latest # production
docker pull nfdi4chem/nmrkit:dev-latest # developmentThe root docker-compose.yml starts the full stack:
cp env.template .env
docker compose up -d| Service | Container | Port | Purpose |
|---|---|---|---|
web | nmrkit-api | 8080→80 | FastAPI application |
nmr-load-save | nmr-converter | — | nmr-cli spectra parsing & prediction |
nmr-respredict | nmr-respredict | — | Residual NMR prediction (future) |
pgsql | — | 5433→5432 | PostgreSQL + RDKit cartridge |
redis | — | 6380→6379 | Cache |
minio | — | 9002, 8901 | Object storage |
prometheus | nmrkit_prometheus | 9090 | Metrics |
grafana | nmrkit_grafana | 3000 | Dashboards |
Open http://localhost:8080/latest/docs for the Scalar API reference.
./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-convertershared-data passes files between API, nmr-cli, and nmr-respredict containersFor a minimal deployment with an external PostgreSQL instance:
# 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:latestWARNING
Standalone mode does not include nmr-converter. Spectra parsing and prediction endpoints require the nmr-cli container — use Docker Compose instead.
For hosted dev/prod environments, use the ops compose files:
# Development
docker compose -f ops/docker-compose-dev.yml up -d
# Production
docker compose -f ops/docker-compose-prod.yml up -dThese configurations use Traefik as a reverse proxy:
| Environment | Host | Image tag |
|---|---|---|
| Development | dev.nmrkit.nmrxiv.org | nfdi4chem/nmrkit:dev-latest |
| Production | nmrkit.nmrxiv.org | nfdi4chem/nmrkit:latest |
Docker Compose health checks hit the registration module:
GET http://localhost:80/latest/registration/health