Deploying, Running, Failed: what each status means

Reading · 6 min · Module 1, lesson 3 of 426 min left in this module

Module 1 · Your first deployLesson 3 of 4

Goal: Read a deployment's status, and know which log to open when it isn't Running.

Key idea

A status tells you whether to wait, move on, or start digging. When it says Failed, the deploy log says why.

Every status, in one place

Come back to this table whenever a later lesson mentions a status.

StatusWhat's happeningWhat you do
BuildingOnly when deploying from a repository: your image is being builtWait, or watch the build log
DeployingThe image is being pulled and spherelets startedWait
Running (Live)Healthy and serving trafficNothing. It worked
FailedStopped before it went liveRead the deploy log
RedeployingA new version is starting; the previous one keeps servingWait
RollingBackGoing back to an earlier versionWait
RestartingYour spherelets are being restarted, same versionWait
Stopping, StoppedSomeone stopped the service; everything is keptStart it when you need it
StartingA stopped service is coming backWait

The status reads Running; the deploy log and this path call that Live. Same thing. Started, Restarted and Redeployed also mean it worked.

Where the logs are

In the console, open the service and choose its Logs tab:

  • Deploy: each step of the rollout, and where it stopped.
  • Runtime: what your app prints while it runs, including a crash.

Services built from a repository also have a Builds tab with the build log.

From the terminal:

csph logs hello-web --kind deploy
csph logs hello-web

The second line shows runtime logs, the default.

When it says Failed

Start with the deploy log and read it from the top. The usual causes, in order:

  1. Wrong port. The app listens somewhere else, so it never answers.
  2. The image can't be pulled. A typo in the name or tag, or a private image without registry credentials.
  3. The app crashes on start. Often a missing environment variable; the runtime log shows it.
  4. The health check fails. The app runs, but the check's Endpoint path returns an error.
  5. Not enough spherelet capacity on the account. This is refused before anything starts, with a message saying so.

Check yourself

You deploy a new version of a Running service and it ends Failed. What are your users seeing?

In the docs