Docker Extensions

Docker extensions allow you to extend KBC in a more flexible way than Custom Science. At the same time, significant implementation effort on your part is required. In Docker extensions, the data interface is very similar to Transformations and Custom Science — data is exchanged as CSV files in designated directories.

Advantages:

  • Customizable UI (input/output mapping)
  • Configuration using JSON Schema editor
  • Branding possible; Documentation and extended description can be provided
  • Arbitrary application environment; can be fully private
  • Automatically offered to all KBC users
  • Support for OAuth2

Disadvantages:

  • Extension registration by Keboola is required
  • Maintaining your own Docker image is necessary on AWS ECR (or Dockerhub or Quay)

See the overview for comparison with other customization options.

How to Create a Docker Extension

If you are new to extending KBC with your own code, you might want to start by creating a simple Custom Science extension first. Any Custom Science extension can be easily converted to a Docker extension.

As a developer, implement the application logic in an arbitrary language and store it in a git repository. The extension must adhere to our Common Interface. We provide libraries to help you with implementation in R and Python. We also have an example application in PHP. When you have your application ready, wrap it in a Docker image. All images which are supposed to be run in KBC must have an ENTRYPOINT.

All applications process input tables stored in CSV files and generate result tables in CSV files. Extractors work the same way. However, instead of reading their input from KBC tables, they get it from an external source (usually an API). Similarly, Writers do not generate any KBC tables. Our Docker Runner component makes sure that the CSV files are created in and taken from the right places. The execution of your extension happens in its own isolated environment. Before you (or anyone else) can use your Docker extension, it must be registered.

If you are new to Docker, there is a quick introduction available, along with a guide to setting up Docker and a guide to building dockerized applications. To create a simple Docker Extension on your own, go to our Quick Start guide. You can also test and debug existing images in the KBC environment.