Skip to content
Stackship documentation Svenska

App ServiceUsers

Runtime and compute

Change an app's runtime stack and version, port, startup project, compute plan and persistent storage.

Requires: apps/write

Open the app, then Configuration → Runtime. Change the fields and choose Save.

Runtime stack and version

Choose the Runtime Stack and the Version. The list offers the versions your platform provides; a version the app still runs but that is no longer offered stays selectable, marked (no longer offered). Saving a new stack or version rebuilds the app — and its slots, which run on the app's stack and version.

For an app that runs a container image, the stack and version are not used.

Port

The Port is the port the app listens on, 1 to 65535. An instance receives traffic only once this port accepts connections.

For an app built from a repository, the port is written into the image when it is built: PORT, SERVER_PORT or ASPNETCORE_HTTP_PORTS — see How an app is built. Saving a new port does not rebuild the image, so after changing it choose Deploy to build the app for the new port. Until then the new instances are checked on the new port while the code listens on the old one, they never become ready, and the previous instances keep serving with the app Degraded.

An environment variable named PORT is refused unless it has the same value as the port.

Startup project

Start Project is the path of the project a .NET build publishes, for example src/MyApp/MyApp.csproj, at most 200 characters. The image runs the assembly named after the project file; with no path it runs app.dll. Changing it rebuilds the app.

Compute plan

Choose the Compute Plan. The list shows each plan's name and description; plans a policy on the boundary does not allow are disabled. An app already on a plan that a policy no longer allows can keep it and still be edited.

A new plan replaces the instances without rebuilding the image. Without persistent storage the old instances keep serving until the new ones are ready — and keep serving if the new, larger ones do not fit on the cluster. With persistent storage the app is briefly down while it restarts.

A plan change does not resize a disk the app already has: the disk keeps the size it was created with.

Persistent storage

Turn on Persistent Storage to give the app a disk, mounted at /data, of the size in its compute plan. Without it, the app's files last only as long as each instance.

  • The disk can be attached to only one node of the cluster at a time, so an app with persistent storage is stopped before it is started again on every rollout, and is briefly down.
  • The app and each of its slots get a disk of their own.
  • The Files tab lets you browse and change the disk — see Files.
  • Turning it off stops mounting the disk; the app no longer sees /data. The disk itself is kept until the app is deleted, and turning persistent storage on again attaches the same disk.

compute_plan_not_found

400, with the platform's usual error body — see The error body. error reads Compute plan '<name>' not found. and module is apps.

The routes that return it, under /boundaries/{boundaryId}/resourcegroups/{resourceGroupName}/resources/apps:

Route The plan checked
POST {appName} The plan of the new app
PUT {appName} and PATCH {appName} The plan the app has after the change
POST {appName}/revisions/{number}/rollback The plan the revision had

The app names a compute plan that is not one of the platform's plans; the name has to match exactly. The check runs every time an app is created, changed or rolled back — also when the plan itself does not change. An app whose plan a platform administrator has since renamed or removed therefore cannot be changed at all — not even a setting unrelated to the plan — until it moves to a plan that exists, and a rollback to a revision on such a plan is refused the same way.

Choose one of the plans the platform offers: the Compute Plan list in the portal, or GET /boundaries/{boundaryId}/resources/appcomputeplans. For an app on a plan that no longer exists, send the plan it should move to in the same change.

A plan that exists but that the boundary's compute plan policy does not allow is refused with another code, compute_plan_not_allowed, and status 422; its message lists the plans that are allowed. That check runs only when the plan changes, so an app can keep a plan that a policy no longer allows.