App

Runtimes

Technical reference on runtimes available in the Nextmv Platform.

When an app is deployed, a runtime is provisioned for it. Runtimes are defined by Docker images. The runtime provides the environment in which the app runs. All runtimes are provisioned on Linux ARM64 machines.

These are the runtimes that are available in the Nextmv Platform:

You may also pull these images down and use them for local development, for example:

cat input.json | \
    docker run --rm -i -v $(pwd):/app ghcr.io/nextmv-io/runtime/python:3.11 \
    python main.py
Copy

If you need packages that are not already included in a runtime, please contact Nextmv support.

ghcr.io/nextmv-io/runtime/default

This runtime is used to run compiled applications such as Go binaries.

  • Versions:

    • ghcr.io/nextmv-io/runtime/default:latest
  • Languages:

    • Go
  • Dockerfile:

FROM debian:bookworm-slim

# Set a default working directory.
WORKDIR /app

# Install certificates.
RUN apt update && apt install -y ca-certificates
Copy
  • Examples of app.yaml manifests in community apps that use this runtime:
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: go
runtime: ghcr.io/nextmv-io/runtime/default:latest

# Directives to build a Go binary from the app.
build:
  command: go build -o main .
  environment:
    GOOS: linux
    GOARCH: arm64

# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
  - main
Copy

ghcr.io/nextmv-io/runtime/python

This runtime is used as the basis for all other Python runtimes.

  • Versions:

    • ghcr.io/nextmv-io/runtime/python:3.11
  • Languages:

    • Python
  • Dockerfile:

FROM python:3.11-slim

# Set a default working directory
WORKDIR /app
Copy
  • Examples of app.yaml manifests in community apps that use this runtime:
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: python
runtime: ghcr.io/nextmv-io/runtime/python:3.11
python:
  # All listed packages will get bundled with the app.
  pip-requirements: requirements.txt

# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
  - main.py
Copy

ghcr.io/nextmv-io/runtime/java

This runtime is used to run Java applications.

  • Versions:

    • ghcr.io/nextmv-io/runtime/java:latest
  • Languages:

    • Java
  • Dockerfile:

FROM eclipse-temurin:21-jdk-jammy

# Set a default working directory
WORKDIR /app
Copy
  • Examples of app.yaml manifests in community apps that use this runtime:
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: java
runtime: ghcr.io/nextmv-io/runtime/java:latest

# Directives to compile a binary from the app.
pre-push: mvn package

# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
  - main.jar
Copy

ghcr.io/nextmv-io/runtime/pyomo

This runtime provisions Python packages to run Pyomo applications. It also installs solvers, such as GLPK and CBC.

  • Versions:

    • ghcr.io/nextmv-io/runtime/pyomo:latest
  • Languages:

    • Python
  • Dockerfile:

FROM ghcr.io/nextmv-io/runtime/python:3.11

# Set a default working directory.
WORKDIR /app

# Update the package list.
RUN apt-get update

# Install cbc solver.
RUN apt-get install -y \
    coinor-cbc \
    coinor-libcbc-dev

# Install glpk solver.
RUN apt-get install -y glpk-utils

# Install SCIP solver.
## Install requirements.
RUN apt-get install -y \
    wget \
    gcc \
    g++ \
    gfortran \
    liblapack3 \
    libtbb12 \
    libcliquer1 \
    libopenblas-dev \
    libgsl27 \
    patchelf \
    cmake \
    wget \
    m4 \
    xz-utils \
    libgmp-dev \
    unzip \
    zlib1g-dev \
    libboost-program-options-dev \
    libboost-serialization-dev \
    libboost-regex-dev \
    libboost-iostreams-dev \
    libtbb-dev \
    libreadline-dev \
    pkg-config \
    git \
    liblapack-dev \
    libgsl-dev \
    flex \
    bison \
    libcliquer-dev \
    gfortran \
    file \
    dpkg-dev \
    libopenblas-dev \
    rpm

## Download the source code.
ENV SCIP_VERSION=9.1.1
ENV SCIP_DIR=scip-\${SCIP_VERSION}
ENV SCIP_TAR=\${SCIP_DIR}.tgz
RUN wget https://scipopt.org/download/release/\${SCIP_TAR}

## Install the SCIP solver (https://www.scipopt.org/doc/html/md_INSTALL.php).
RUN tar xvzf \${SCIP_TAR} && \
    cd \${SCIP_DIR} && \
    mkdir build && \
    cd build && \
    ls -lah && \
    cmake .. -DAUTOBUILD=on -DCMAKE_INSTALL_PREFIX=/usr && \
    make && \
    make check && \
    make install && \
    cp -r bin/* /usr/bin && \
    cp -r lib/* /usr/lib

# Install requirements.
COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# Clean up.
RUN rm \${SCIP_TAR}
RUN rm -rf \${SCIP_DIR}
Copy
  • requirements.txt installed in the runtime:
# Pyomo packages.
pyomo==6.6.2

# Other packages.
numpy==1.26.4
pandas==2.2.0
scipy==1.12.0
Copy
  • Examples of app.yaml manifests in community apps that use this runtime:
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: python
runtime: ghcr.io/nextmv-io/runtime/pyomo:latest
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
  - main.py
python:
  # Packages the app depends on need to be listed in a requirements.txt file
  # that is referenced here. All listed packages will get bundled with the app.
  pip-requirements: requirements.txt
Copy

ghcr.io/nextmv-io/runtime/hexaly

Based on the python runtime, it provisions (pre-installs) the Hexaly solver to run Python applications.

  • Versions:

    • ghcr.io/nextmv-io/runtime/hexaly:latest
  • Languages:

    • Python
  • Dockerfile:

FROM ghcr.io/nextmv-io/runtime/python:3.11

# Set a default working directory.
WORKDIR /app

# Update the package list and install deps.
RUN apt-get update
RUN apt-get install -y wget

# Set Hexaly variables.
ENV HEXALY_VERSION=13_0_20240712
ENV HEXALY_FILE=Hexaly_\${HEXALY_VERSION}_LinuxA64.run

# Download the Hexaly solver.
RUN wget https://www.hexaly.com/downloads/\${HEXALY_VERSION}/\${HEXALY_FILE}

# Install the Hexaly solver.
RUN chmod +x \${HEXALY_FILE}
RUN bash \${HEXALY_FILE}
Copy
  • Examples of app.yaml manifests in community apps that use this runtime:
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: python
runtime: ghcr.io/nextmv-io/runtime/hexaly:latest
python:
  # All listed packages will get bundled with the app.
  pip-requirements: requirements.txt

# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
  - main.py
  # If you have a Hexaly license, uncomment the following line and make sure to
  # store your license information in that file.
  # - license.dat
Copy

Page last updated

Go to on-page nav menu