Execution Environment

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/ortools:latest \
    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.

  • 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
pre-push: GOOS=linux GOARCH=arm64 go build -o main
files:
  - main
Copy

ghcr.io/nextmv-io/runtime/python

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

  • Languages:

    • Python
  • Dockerfile:

FROM python:3.11-slim

# Set a default working directory
WORKDIR /app
Copy

ghcr.io/nextmv-io/runtime/ampl

The AMPL runtime is only available with premium execution classes. Please contact Nextmv support to get access.

This runtime provisions Python packages to run AMPL applications.

  • Languages:

    • Python
  • Dockerfile:

FROM ghcr.io/nextmv-io/runtime/python:v1.0.1

# Set a default working directory.
WORKDIR /app

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

# Clean up.
RUN rm requirements.txt
Copy
  • requirements.txt installed in the runtime:
# Look for AMPL’s packages in the AMPL package index.
--index-url https://pypi.ampl.com
--extra-index-url https://pypi.org/simple

# AMPL packages.
amplpy>=0.13.3
ampltools>=0.7.5
ampl-module-base>=20240126
ampl-module-copt>=20240115
ampl-module-cbc>=20240115
ampl-module-gcg>=20240221
ampl-module-gecode>=20220504
ampl-module-gokestrel>=20211022
ampl-module-gurobi>=20240115
ampl-module-highs>=20240115
ampl-module-lgo>=20190908
ampl-module-open>=20240121
ampl-module-scip>=20240121
ampl-module-xpress>=20240115

# These packages are not available for an ARM64 architecture.
# ampl-module-amplgsl==20231107
# ampl-module-baron==20230405
# ampl-module-coin==20240115
# ampl-module-conopt==20211109
# ampl-module-cplex==20240115
# ampl-module-gjh==20231111
# ampl-module-ilogcp==20230228
# ampl-module-knitro==20240209
# ampl-module-lindoglobal==20210406
# ampl-module-loqo==20210410
# ampl-module-minos==20211109
# ampl-module-mosek==20240118
# ampl-module-plugins==20240102
# ampl-module-snopt==20211109

# Other packages.
nextmv==0.4.0
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/ampl:latest
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
  - main.py
  # If you have an AMPL license, uncomment the following line and make sure to
  # store your license information in that file.
  # - ampl_license_uuid
Copy

ghcr.io/nextmv-io/runtime/gurobi

The AMPL runtime is only available with premium execution classes. Please contact Nextmv support to get access.

This runtime provisions Python packages to run Gurobi applications.

  • Languages:

    • Python
  • Dockerfile:

FROM ghcr.io/nextmv-io/runtime/python:v1.0.1

# Set a default working directory.
WORKDIR /app

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

# Clean up.
RUN rm requirements.txt
Copy
  • requirements.txt installed in the runtime:
# Gurobi packages
gurobipy==11.0.0

# Other packages.
nextmv==0.4.0
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/gurobi:latest
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
  - main.py
  - gurobi.lic # Store your license information in this file.
Copy

ghcr.io/nextmv-io/runtime/java

This runtime is used to run Java applications.

  • 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
files:
  - main.jar
pre-push: mvn package
Copy

ghcr.io/nextmv-io/runtime/ortools

This runtime provisions Python packages to run OR-Tools applications.

  • Languages:

    • Python
  • Dockerfile:

FROM ghcr.io/nextmv-io/runtime/python:v1.0.1

# Set a default working directory.
WORKDIR /app

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

# Clean up.
RUN rm requirements.txt
Copy
  • requirements.txt installed in the runtime:
# OR-Tools packages.
ortools==9.8.3296

# Other packages.
nextmv==0.4.0
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/ortools:latest
# 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/pyomo

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

  • Languages:

    • Python
  • Dockerfile:

FROM ghcr.io/nextmv-io/runtime/python:v1.0.1

# Set a default working directory.
WORKDIR /app

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

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

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

# Clean up.
RUN rm requirements.txt
Copy
  • requirements.txt installed in the runtime:
# Pyomo packages.
pyomo==6.6.2

# Other packages.
nextmv==0.4.0
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
Copy

ghcr.io/nextmv-io/runtime/xpress

This runtime provisions Python packages to run FICO-Xpress applications.

  • Languages:

    • Python
  • Dockerfile:

FROM ghcr.io/nextmv-io/runtime/python:v1.0.1

# Set a default working directory.
WORKDIR /app

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

# Clean up.
RUN rm requirements.txt
Copy
  • requirements.txt installed in the runtime:
# Xpress packages.
xpress==9.2.0; platform_system != 'Darwin' or (platform_system == 'Darwin' and platform_machine != 'arm64')

# Other packages.
nextmv==0.4.0
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/xpress:latest
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
  - main.py
Copy

Page last updated

Go to on-page nav menu