Execution Environment

Execution environment

An introduction to execution environment in the Nextmv Platform.

The execution environment is the environment in which an app runs remotely. It is characterized by features such as:

The execution environment is specified in part by the app manifest. All applications that run on the Nextmv Platform must contain this file in the root of the project.

App manifest

An application that runs on the Nextmv Platform must contain a file named app.yaml which is known as the app manifest. This file is used to specify the execution environment for the app. These are the attributes of the app manifest:

  • type (mandatory): the language type to use for the app.
    • go for Go
    • python for Python
    • java for Java
  • runtime (mandatory): the runtime to use for the app.
  • files (mandatory): the files to include in the app. Globbing is supported so you may specify individual files or whole directories. Include the entrypoint of the app here (see below). Some examples of supported glob patterns: **/*.py (all Python files recursively), !**/*.pyc (exclude all Python compiled files), app/**/*.py (all Python files in the app directory). Patterns are applied in order as they are defined.
  • pre-push (optional): a command to run before the app is pushed to the Nextmv Cloud. This command can be used to compile a binary, run tests or similar tasks. The command will be executed via the shell (i.e., bash -c on Linux & macOS or cmd /c on Windows). The command must exit with a status of 0 to continue the push process. This command is executed just before the app gets bundled and pushed (after the build command).
  • build (optional): contains further build-specific attributes.
    • command (optional): the command to run to build the app. This command will be executed without a shell (i.e., directly). The command must exit with a status of 0 to continue the push process. This command is executed prior to the pre-push command.
    • environment (optional): environment variables to set when running the build command given as key-value pairs. E.g. GOOS: linux.
  • python (optional, only for Python apps): contains further Python-specific attributes.
    • pip-requirements (optional): path to a requirements.txt file containing (additional) Python dependencies that will be bundled with the app.

You can port any custom app into the Nextmv Platform. You just need the app.yaml manifest in the root of the project with the appropriate attributes. The entrypoint of the app should be:

  • main for Go
  • main.py for Python
  • main.jar for Java

Find basic examples of app.yaml manifests for different languages below.

type: go
# We use the default runtime as the app gets compiled into a binary
runtime: ghcr.io/nextmv-io/runtime/default:latest
# We build the app for linux and arm64 (the default runtime)
# and call it "main" (the default entrypoint)
build:
  command: go build -o main .
  environment:
    GOOS: linux
    GOARCH: arm64
# We only need to include the resulting binary "main"
files:
  - main
Copy

Furthermore, there are various examples of manifests in context of complete basic apps from our templates and more complex apps from our community apps for all supported languages. Find the manifests themselves as a reference below.

  • go apps.
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: go
runtime: ghcr.io/nextmv-io/runtime/default:latest
build:
  command: go build -o main .
  environment:
    GOOS: linux
    GOARCH: arm64
files:
  - main
Copy
  • python apps.
# 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

# We offer a few different runtimes with pre-installed packages.
# Use these for convenience, if they suit your needs.
#
# For OR-Tools, use the following runtime:
# runtime: ghcr.io/nextmv-io/runtime/ortools:latest
# For Pyomo, a use the following runtime:
# runtime: ghcr.io/nextmv-io/runtime/pyomo:latest
# For AMPL, use the following runtime:
# runtime: ghcr.io/nextmv-io/runtime/ampl:latest
# For Gurobi, use the following runtime and add the licence file 'gurobi.lic' to the files list:
# runtime: ghcr.io/nextmv-io/runtime/gurobi:latest

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

# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
  - main.py
Copy
  • java apps.
# 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

Page last updated

Go to on-page nav menu