Skip to main content

Run DB2Rest as Koyeb Web Service

Run on Koyeb

What is a Koyeb Service ?

Koyeb service is an application that can run as a web application, API accessible publicly over internet or private like a background worker. Services can be part of a microservices application or a single monolithic application. The platform makes it easy to deploy such services from Git repositories or using a Docker image. For more information on Koyeb service refer to this link.

tip

It is very easy to auto-scale a service on Koyeb. Reference is below:

Koyeb Autocaling reference

Create Koyeb App

In order to create Koyeb App, click on the Apps tab.

Koyeb Apps

On the Apps dashboard click on Create App button.

Create App

This will show the Deploy a new project on Koyeb page.

Deploy a new project

On the Deploy a project on Koyeb page there are options to:

  • Github : deploy from a Github repository.
  • Docker : deploy from a Docker image.

Deploy a new project

Select Deployment method

DB2Rest provides a public docker image. This can be used to deploy as Koyeb service. Hence, select Docker as the deployment method.

Docker Image

Now on the Docker image page provide the path to the DB2Rest docker image and click on Next.

DB2Rest Public Docker Image

docker.io/kdhrubo/db2rest:latest

DB2Rest Docker image

This will show the Configure service and deploy screen. On this screen some configuration needs to be edited as described in the next sections.

Configure service and deploy

Environment Variables

The following environment variables are required:

  • DB_URL
  • DB_USER
  • DB_PASSWORD

These values are available from the connection details tab (Java tab) as shown below.

Environment Variables

The environment variables can be configured as shown below. All the values are set as type Plaintext.

Configured Environment Variables

Regions

In this case the service is going to be deployed in the Frankfurt region. The DB2Rest service should be deployed in the same region as the database.

Instance

In this example a free instance is selected for demonstration. Expand this section and select compute, memory, and disk capacity appropriate for your deployment.

Scaling

Change the number of instances to suit your application needs.

warning

As of writing this article, Koyeb does not support scale to zero.

Exposed Ports

In this case port 8080 is selected (instead of default 8000). However, multiple ports can be selected (including remote debugging port) for the application service.

Exposed Ports

Health checks

The health check configuration should be changed to point to the DB2Rest actuator end point for health status check as shown below.

Health checks

App and Service names

The app and service names can be changed, however in this case default values are applied.

Finally click on the Deploy button at the top of the section.

Deployment Status

On successful deployment, a healthy status for the instance shows.

Deployment Status

Logs & Events

The deployment logs can be reviewed to verify successful deployment.

Logs & Events

Key things to note in the log are:

  • All health checks are passing and the instance is ready to process requests.
  • DB2Rest is successfully started and actuator is available.
  • DB2Rest is connected to the database and has successfully loaded the meta-data about the employee table created in the Create Database on Koyeb guide.

Test DB2Rest App Service

Once the deployment is successfully completed, it is time to test the application service.

Check DB2Rest Health

It is very easy to verify DB2Rest application service with the actuator endpoint as shown below:


curl --request GET \
--url 'https://marine-lissi-homi.koyeb.app/actuator/health?=' \
--header 'User-Agent: insomnia/8.6.1'


The actuator health check service in DB2Rest will return the following response:

HTTP/1.1 200
Content-Type: application/json
Transfer-Encoding: chunked

{
"status": "UP"
}

The status attribute shows that the application service is ready to handle database operations.

Insert Row


curl --request POST \
--url https://marine-lissi-homi.koyeb.app/employee \
--header 'Content-Type: application/json' \
--header 'User-Agent: insomnia/8.6.1' \
--data '{
"first_name" : "Salman",
"last_name" : "Khan",
"email" : "sk@skfilms.com",
"created_on" : "2015-04-14T11:07:36.639Z"
}'


HTTP Response

{
"row": 1,
"keys": {
"id": 1
}
}

Read Row


curl --request GET \
--url https://marine-lissi-homi.koyeb.app/employee \
--header 'User-Agent: insomnia/8.6.1'

HTTP Response

[
{
"id": 1,
"first_name": "Salman",
"last_name": "Khan",
"email": "sk@skfilms.com",
"created_on": "2015-04-14T11:07:36.639+00:00"
}
]

Finally, refer to the DB2Rest documentation for further learning and exploring API features.

For help, visit us on Discord or our GitHub Discussions