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:

NoteProcfile 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 the CAPI V3 documentation.

  2. Add each process and its start command to the Procfile. For 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:

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

  Showing health and status for app example-app in org test / space test as admin...

  name:              example-app
  requested state:   started
  routes:            example-app.cloudfoundry.example.com
  last uploaded:     Wed 17 Jul 22:57:04 UTC 2024
  stack:             cflinuxfs3
  buildpacks:
          name             version   detect output   buildpack name
          ruby_buildpack   1.8.57    ruby            ruby

  type:           web
  sidecars:
  instances:      1/1
  memory usage:   1024M
       state     since                  cpu    memory        disk           logging         cpu entitlement   details
  #0   running   2024-07-17T22:57:22Z   0.3%   49.5M of 1G   130.2M of 1G   0B/s of 16K/s   2.4%

  type:           worker
  sidecars:
  instances:      2/2
  memory usage:   1024M
       state     since                  cpu    memory        disk           logging         cpu entitlement   details
  #0   running   2024-07-17T22:57:22Z   0.3%   49.5M of 1G   130.2M of 1G   0B/s of 16K/s   2.4%
  #0   running   2024-07-17T22:57:22Z   0.3%   49.5M of 1G   130.2M of 1G   0B/s of 16K/s   2.4%
  

Important To avoid security exposure, ensure that you migrated your apps and custom buildpacks to use the cflinuxfs4 stack based on Ubuntu 22.04 LTS (Jammy Jellyfish). The cflinuxfs3 stack is based on Ubuntu 18.04 (Bionic Beaver), which reaches end of standard support in April 2023.

check-circle-line exclamation-circle-line close-line
Scroll to top icon