Skip to content

Deploy an Application with Buildpacks

Using Choreo, you can easily deploy applications written in different language frameworks (such as Java, Go, NodeJS, Python, Ruby, PHP, etc.) on shared or private data planes.

Choreo supports deploying applications with buildpacks for the following component types:

  • Service
  • Web Application
  • Scheduled Task
  • Manual Task
  • Webhook
  • Event Handler
  • Test Runner

Buildpacks

Buildpacks are a fundamental building block in modern application development. They convert your source code into a secure, efficient, production-ready container image without a Dockerfile. With Choreo, developers can take advantage of this powerful tool to effortlessly deploy their applications without the hassle of manual configuration.

Choreo uses Google Buildpacks as default buildpacks for Java, Go, NodeJS, Python, PHP, and Ruby. Choreo uses its own buildpacks for Ballerina and WSO2 MI.

Develop a component

To develop a service component that exposes a Service in Go, you can follow the Develop a Service guide.

Follow the guidelines below based on your language:

Supported Versions - 3.10.x, 3.11.x

Refer below examples for different component types. Follow the readme.md inside the example.

Component Type Example
Service Reading Books List Service
Manual Task Hello World Task

Procfile

A Procfile is a configuration file used to declare the commands that are run by your application's containers.

Info

In Python projects, it is mandatory to have a Procfile with the web process type in the project root directory.

Here's an example Procfile for an application:

web: <command to start your application>

e.g.,

web: python main.py
web: gunicorn --bind :8080 --workers 1 --threads 8 --timeout 0 main:app
web: flask run --host=0.0.0.0

For more examples, see Choreo samples.

Supported Versions - 2201.3.5, 2201.4.1, 2201.5.0, 2201.5.1, 201.6.0, 2201.7.0

Refer below examples for different component types. Follow the readme.md inside the example.

Component Type Example
Service Echo Service
Manual Task Covid19 Statistics To Email
Webhook Salesforce New Case To Google Sheet
Scheduled Task Shopify New Customers to HubSpot Create/Update Contact

For more examples, see Choreo samples.

Supported Versions - 1.x

Refer below examples for different component types. Follow the readme.md inside the example.

Component Type Example
Service Greeting Service
Manual Task Hello World Task
Web Application Hello World Web Application

For more examples, see Choreo samples.

Supported Versions - 6.x, 7.x, 8.x

Refer below examples for different component types. Follow the readme.md inside the example.

Component Type Example
Service Greeting Service

For more examples, see Choreo samples.

Supported Versions - 8, 11, 17, 18 (OpenJDK Runtime Environment Temurin)

Refer below examples for different component types. Follow the readme.md inside the example.

Component Type Example
Service Product Management Service
Manual Task Hello World Task

Info

When working on Java projects:

  • The Main class should be defined in the manifest file.
  • If Maven files such as mvn.cmd exist in the project without the .mvn directory, the build will fail. To ensure a successful build, you must either commit the .mvn directory along with any Maven files or not include any Maven files in the project if you choose not to commit the .mvn directory.

Procfile

A Procfile is a configuration file used to declare the commands that are run by your application's containers. If you want to customize the default entry point of the container, you can include a Procfile with the web process type in the project root directory. In Java projects, it is optional to include a Procfile.

Here's an example Procfile for an application:

web: <command to start your application>

e.g.,

web: java -jar target/sample.jar

For more examples, see Choreo samples.

Supported Versions - 12.x.x, 14.x.x, 16.x.x, 18.x.x, 20.x.x

Refer below examples for different component types. Follow the readme.md inside the example.

Component Type Example
Service Reading Books List Service
Manual Task Hello World Task

Procfile

A Procfile is a configuration file used to declare the commands that are run by your application's containers. If you want to customize the default entry point of the container, you can include a Procfile with the web process type in the project root directory. In NodeJS projects, it is optional to include a Procfile.

Here's an example Procfile for an application:

web: <command to start your application>

e.g.,

web: node app.js

For more examples, see Choreo samples.

Supported Versions - 8.1.x, 8.2.x

Refer below examples for different component types. Follow the readme.md inside the example.

Component Type Example
Service Hello World Service
Manual Task Hello World Task
Web Application Hello World Web Application

Procfile

A Procfile is a configuration file used to declare the commands that are run by your application's containers. If you want to customize the default entry point of the container, you can include a Procfile with the web process type in the project root directory. In PHP projects, it is optional to include a Procfile.

Here's an example Procfile for an application:

web: <command to start your application>

e.g.,

web:php -S 0.0.0.0:8000 index.php

For more examples, see Choreo samples.

Supported Versions - 3.1.x, 3.2.x

Refer below examples for different component types. Follow the readme.md inside the example.

Component Type Example
Service Hello World Service
Manual Task Hello World Task
Web Application Hello World Web Application

Procfile

A Procfile is a configuration file used to declare the commands that are run by your application's containers. If you want to customize the default entry point of the container, you can include a Procfile with the web process type in the project root directory. In Ruby projects, it is optional to include a Procfile.

Here's an example Procfile for an application:

web: <command to start your application>

e.g.,

web: ruby app.rb
web:bundle exec ruby app.rb -p 8080

For more examples, see Choreo samples.

Supported Versions - 4.1.0.x, 4.2.0.x

Refer below examples for different component types. Follow the readme.md inside the example.

Component Type Example
Service Hello World Service

For more examples, see Choreo samples.

Supported Java Versions - 8, 11, 17, 18 (OpenJDK Runtime Environment Temurin)

Info

You can use this buildpack only with web applications. For other component types, use the Java buildpack. Additionally, if the generated artifact is a WAR file, it is necessary to include a Procfile.

Procfile

A Procfile is a configuration file used to declare the commands that are run by your application's containers. If you want to customize the default entry point of the container, you can include a Procfile with the web process type in the project root directory. In Java projects, it is optional to include a Procfile.

Here's an example Procfile for an application:

web: <command to start your application>

e.g.,

web: java -jar target/sample.war

Configure build-time environment variables

You can configure the environment variables necessary to build the component using the Build Configurations Editor on the component Build page.

Info

The capability to configure build-time environment variables is not available for components created using Ballerina or WSO2 MI buildpacks.

During the build process, the build-time environment variables and their values are passed to the buildpack. Therefore, you can configure both buildpack-specific environment variables and those required for the component build.

For example, if you want to override the Maven command of the Java buildpack, you can use GOOGLE_MAVEN_BUILD_ARGS as the environment key and clean install as the value.

For more examples, see Google Cloud's buildpacks documentation.