Any start/stop, update, or scale operation on a Marathon app results in a deployment: https://mesosphere.github.io/marathon/docs/deployments.html
Deployments could get stuck for a number of reasons:
- Marathon isn't getting the resource offers it needs to launch the app.
Information about resource offers is in both the marathon logs and the Mesos master logs. For more information about accessing logs, see: How do I access DCOS logs? It's important to ensure that the acceptedResourceRole for the task matches the role of the offer.
- The app health check is failing.
If an app has a health check, it's deployment does not complete until the health check passes. The "health" column in the Marathon UI will be red for failure, green for success, and gray if there's no check. To see more info about the health of individual tasks, run `dcos marathon task list --json <app-id>`
- `docker pull` is failing.
If your app runs in a docker image, the Mesos agent node will first have to pull the docker image. If this fails, your app could get stuck in a "deploying" state. The Mesos agent logs will contain this information. See: How do I access DCOS logs?