Skip to content

Restart and stop an app

Goal: Control an app’s running state without pushing new code.

Prerequisites:

  • An app with at least one successful deployment.

Open the app detail page → ActionsRestart. The running replicas are terminated and new ones start from the current deployment.

Open the app detail page → ActionsStop. Replicas go to zero. The app URL returns an error page until you start again. Stopped apps do not count against runtime quotas; storage for attached databases continues to exist.

A stopped app can be started again from the same menu.

Not yet available in the dashboard. To revert to a previous build, push a new commit (or git revert) — the next deploy publishes a new image. One-click rollback to a stored image is on the Phase 5 hardening roadmap.

Open the app detail page → scroll to the Danger zone panel at the bottom → Delete app → type the app’s name to confirm → Delete. This is permanent:

  • The Kubernetes Deployment, Service, and Ingress are removed. Running replicas stop immediately.
  • Custom domains attached to the app are removed (DNS records you created with your registrar are not touched — clean those up separately).
  • All deployments, environment variables, and domain rows for this app are deleted from the database.
  • An attached managed database is not deleted; it stays in its environment and can be reattached to a different app or deleted separately.

There is no undo.

After any lifecycle action, the app’s Status chip reflects the new state, and the Logs tab shows the matching events.

Uploy shows one of six statuses for every app:

  • Creating — the app exists but has never had a successful deploy. The first git push drives it into Starting.
  • Starting — the container image is being pulled or the app has not yet passed its readiness probe. This usually clears in a few seconds.
  • Running — all replicas are Ready and serving traffic.
  • Stopping — you clicked Stop; replicas are being scaled to zero.
  • Stopped — replicas are at zero. The app is not serving traffic and its URL returns 503.
  • Crashed — at least one replica cannot reach Ready, or it terminated with an error. The badge shows the reason:
    • ImagePullBackOff — the build image cannot be pulled. Usually a registry auth problem.
    • CrashLoopBackOff — the app starts and then exits before becoming Ready. Check the container logs.
    • OOMKilled — the app was killed for using more memory than its limit. Raise the memory limit in Resources.
    • ready_probe_timeout — the app failed to become Ready within 2 minutes of start. Check the port it listens on matches PORT.

The status badge updates live — you do not need to refresh the page.