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