# Deployment with Docker

The quickest way to install Kestra is to use Docker Compose. This will start a non-production Kestra with all the dependencies.

# Before you begin

Make sure you have already installed :

# Launch Kestra

This will start all the dependencies with a pre-configured Kestra that is connected to everything!

Kestra will start a Standalone server (all the different servers in one JVM).
This is clearly not meant for production workloads, but is certainly sufficient to test on a local computer.

The configuration will be done inside the KESTRA_CONFIGURATION environment variable of the Kestra container. You can update the environment variable inside the Docker compose file, or pass it via the docker command line argument.
If you pass it via the docker command line argument, don't forget to add existing configuration or nothing will work anymore.

# Docker Image

# Use official images

The official Kestra docker images are available in Docker hub (opens new window).

We provide 2 images :

  • kestra/kestra:latest
  • kestra/kestra:latest-full

These docker images are based on the eclipse-temurin:11-jre docker image.

# kestra/kestra:latest

This image :

# kestra/kestra:latest-full

This image contains all the kestra plugins and all the binaries for Python tasks (opens new window) or Node tasks (opens new window).
Take care that this image will always contains the latest version of all plugins that can have some breaking changes.

# Create a new image with more binaries

If the base or full image does not contains binaries you need, you can create a new image from the Kestra base image and add needed binaries.

The following DockerFile creates an image from the Kestra base image and adds the golang binary:

ARG IMAGE_TAG=latest
FROM kestra/kestra:$IMAGE_TAG

RUN mkdir -p /app/plugins && \
  apt-get update -y && \
  apt-get install -y --no-install-recommends golang && \
  apt-get clean && rm -rf /var/lib/apt/lists/* /var/tmp/*

# Create a new image with more plugins

By default, the Kestra base docker image does not contains any plugins, you can create a new image from the Kestra base image and add the needed plugins.

The following DockerFile creates an image from the Kestra base image and adds the plugin-notifications, storage-gcs and plugin-gcp plugins using the command kestra plugins install:

ARG IMAGE_TAG=latest
FROM kestra/kestra:$IMAGE_TAG

RUN /app/kestra plugins install \
  io.kestra.plugin:plugin-notifications:LATEST \
  io.kestra.storage:storage-gcs:LATEST \
  io.kestra.plugin:plugin-gcp:LATEST

# Docker image tags

We provide 3 tags for each docker images:

  • latest: the latest default image along with its full variant latest-full.
  • release: the preview of the next release along with its full variant release-full.
  • develop: an experimental image based on the develop branch that will change every day and contains all unstable features we are working on, along with its full variant develop-full.