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.

Push an app with multiple processes using a manifest

To push an app with multiple processes using a manifest:

  1. 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
    
  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.

Push an app with multiple processes using a Procfile

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.

  1. 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.

  2. 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
    
  3. Push the app:

    cf push myapp
    

By default, the web process has a route and one instance. Other processes have zero instances by default.

Scale a process

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.

View processes

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
check-circle-line exclamation-circle-line close-line
Scroll to top icon