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. You can push an app with multiple processes using either a manifest or a Procfile.
For more information about processes, see Processes in the CAPI V3 documentation.
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 CLI v7:
Run:
cf scale APP-NAME --process PROCESS-NAME -i INSTANCE-COUNT
Where
APP-NAME
is the name of your app.PROCESS-NAME
is the name of the process you want to scale.INSTANCE-COUNT
is 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 worker
process.
$ 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