TL;DR: We are releasing updated Docker images for the SCIP Optimization Suite: a ready-to-use FastAPI web service and a pre-configured Jupyter Lab environment.

Sebastian Pokutta • December 1, 2025

We are releasing updated Docker images for the SCIP Optimization Suite available at

👉 https://hub.docker.com/repositories/scipoptsuite

enabling easy access to the solver via a web API or a comprehensive Jupyter Lab environment. These images are designed to minimize setup time for both teaching and production prototyping; think of this page as a replacement for the now deprecated Dockerized SCIP for Teaching.

The suite currently includes:

  • SCIP 10.0.0
  • PySCIPOpt 6.0.0
  • Python 3.11
  • OS Debian Slim

Web Service Image (scip-webservice)

The scip-webservice is a FastAPI-based web service that provides endpoints to upload MPS/LP files and solve them using SCIP. It includes a basic dashboard and upload interface.

Quick Start

You can start the service with a single command (ensure you provide a secret key):

docker run \
  -p 8000:8000 \
  -e API_SECRET_KEY=<random_string_of_atleast_32_characters> \
  scipoptsuite/scip-webservice

Once running, you can access the interfaces:

Configuration & Parameters

You can configure the service using environment variables (-e) and Docker resource flags.

Concurrency & Limits

Variable / Flag Default Description
MAX_CONCURRENT_JOBS 2 (Env Var) Maximum number of parallel solver processes. Set this based on your available CPU cores.
JOB_RETENTION_HOURS 24 (Env Var) How long to keep job results and logs before deleting them.
MAX_UPLOAD_SIZE_MB 1024 (Env Var) Max allowed file size in MB.
--cpus N/A (Docker Flag) Limit the container’s CPU usage. Recommended: MAX_CONCURRENT_JOBS * 1.0.
--memory N/A (Docker Flag) Limit the container’s memory. Recommended: 2GB per concurrent job.

Database & Volumes

By default, the service uses SQLite. For production (e.g., Kubernetes), you can provide a PostgreSQL connection string via the DATABASE_URL environment variable.

We also recommend mounting volumes to access logs and problem files on the host:

Volume Path Description
/app/logs Mount this to access server logs and solver output on the host.
/app/problems Mount this to access uploaded and solved problem files.

Example: Production-Ready Run

Run with 4 concurrent workers, 4 CPU limit, and 8GB memory:

docker run -d \
  -p 8000:8000 \
  -e MAX_CONCURRENT_JOBS=4 \
  -e API_SECRET_KEY=your_secure_random_key \
  --cpus=4.0 \
  --memory=8g \
  -v $(pwd)/logs:/app/logs \
  -v $(pwd)/problems:/app/problems \
  scipoptsuite/scip-webservice

Jupyter Lab Image (scip-jupyterlab)

A pre-configured data science environment with SCIP, PySCIPOpt, and standard Python data stacks (Pandas, NumPy, Scikit-Learn, Matplotlib). This is ideal for prototyping and interactive solving.

Quick Start

docker run -p 8888:8888 -v $(pwd):/app scipoptsuite/scip-jupyterlab

Access Jupyter Lab at http://localhost:8888.

Configuration & Parameters

Parameter Type Default Description
8888 Port 8888 The internal port for Jupyter Lab.
JUPYTER_TOKEN Env Var (Random) Set a custom password/token for access. If not set, a random token is printed to the console on startup.
/app Volume N/A Highly Recommended: Mount your local working directory here to save your notebooks and work.

Authentication

Option A: Random Token (Default) Run the container and watch the terminal output for a line like Jupyter Lab Token: 8f3a1e9c.... Use this token to log in.

Option B: Custom Token Pass the JUPYTER_TOKEN environment variable:

docker run -p 8888:8888 \
  -e JUPYTER_TOKEN=mysecretpassword \
  -v $(pwd):/app \
  scipoptsuite/scip-jupyterlab

Included Libraries

  • pyscipopt (SCIP Interface)
  • jupyterlab
  • numpy
  • pandas
  • matplotlib
  • scikit-learn
  • ipykernel