This topic describes how to push and manage apps with multiple processes.
The Cloud Foundry API (CAPI) V3 supports using a single command to push apps that run multiple processes, such as a web app that has a UI process and a worker process. To push an app that creates multiple processes from the same codebase, you first define its processes in a Procfile. For more information, see Push an App with Multiple Processes below.
For more information about processes, see Processes in the CAPI V3 documentation.
This section describes how to push an app with multiple processes using either a manifest or a Procfile.
To push an app with multiple processes using a manifest:
Create a file that defines a manifest. Include each process with its start command. See the following example, which defines the app
example-app with two processes:
version: 1 - name: example-app processes: - type: web command: bundle exec rackup config.ru -p $PORT instances: 3 - type: worker command: bundle exec rake worker:start health-check-type: process instances: 2
Push the app using your manifest:
cf push -f example-manifest.yml
For more information about defining processes with manifests, see processes in App Manifest Attribute Reference.
To push an app with multiple processes using a Procfile:
Note: Procfile support varies depending on the buildpack you use. For example, the Staticfile buildpack requires a Staticfile instead of a Procfile. For more information, see Staticfile Buildpack.
Create a file named
Procfile in the root of your app directory.
Note: For more information about Procfiles, see Procfiles in the CAPI V3 documentation.
Add each process and its start command to the Procfile. See the following example:
web: bundle exec rackup config.ru -p $PORT worker: bundle exec rake worker:start
Push the app:
cf push myapp
By default, the web process has a route and one instance. Other processes have zero instances by default.
To scale an app process:
cf scale APP-NAME --process PROCESS-NAME -i INSTANCE-COUNT
APP-NAMEis the name of your app.
PROCESS-NAMEis the name of the process you want to scale.
INSTANCE-COUNTis the number of instances to which you want to scale the process.
To view the processes running as part of an app, run
cf APP-NAME, where
APP-NAME is the name of your app. See the following example in which the app has a
web and a
$ cf app myapp Showing health and status for app myapp in org test / space test as admin... name: myapp requested state: started processes: web:1/1, worker:2/2 memory usage: 256M x 1, 256M x 2 routes: myapp.cloudfoundry.example.com stack: cflinuxfs3 buildpacks: ruby web:1/1 state since cpu memory disk #0 running 2017-09-25 15:43:26 PM 0.2% 18.9M of 256M 84.4M of 1G worker:2/2 state since cpu memory disk #0 running 2017-09-25 15:49:46 PM 0.1% 5M of 256M 73M of 1G #1 running 2017-09-25 15:49:46 PM 0.1% 5M of 256M 73M of 1G