Skip to main content

NoETL Docker Usage Guide

This guide provides detailed instructions for using NoETL with Docker.

Overview

NoETL can be run in Docker containers, which provides several benefits:

  • Consistent environment across different platforms
  • Easy deployment
  • Isolation from the host system
  • Simplified dependency management

Prerequisites

  • Docker installed on your system
  • Docker Compose (optional, for multi-container setups)

Quick Start

Using the Official Docker Image

The simplest way to run NoETL in Docker is to use the official Docker image:

# Pull the latest NoETL image
docker pull noetl/noetl:latest

# Run the NoETL server
docker run -p 8082:8082 noetl/noetl:latest

This will start the NoETL server and expose it on port 8082 of your host machine.

Building and Running from Source

If you want to build the Docker image from source:

  1. Clone the repository:

    git clone https://github.com/noetl/noetl.git
    cd noetl
  2. Build the Docker image:

    docker build -t noetl:local .
  3. Run the NoETL server:

    docker run -p 8082:8082 noetl:local

Using Docker Compose

NoETL provides a Docker Compose configuration that sets up a complete environment with PostgreSQL:

  1. Start the containers:

    docker-compose up
  2. Or build and start the containers:

    docker-compose up --build
  3. To run in detached mode:

    docker-compose up -d
  4. To stop the containers:

    docker-compose down

Using the Makefile

NoETL provides a Makefile with convenient commands for Docker operations:

# Build the Docker containers
make build

# Start the Docker containers
make up

# Stop the Docker containers
make down

# View logs
make logs

# Run tests in Docker
make test

Accessing the NoETL Server

Once the NoETL server is running in Docker, you can access it at:

  • Web UI: http://localhost:8082
  • API: http://localhost:8082/api

Running Playbooks in Docker

Using the CLI

You can execute NoETL commands inside the Docker container:

# Execute a playbooks directly
docker exec -it noetl noetl agent -f /path/to/playbooks.yaml

# Register a playbooks in the catalog
docker exec -it noetl noetl playbooks --register /path/to/playbooks.yaml

# Execute a playbooks from the catalog
docker exec -it noetl noetl playbooks --execute --path "workflows/example/playbook"

Using the API

You can also use the NoETL API to execute playbooks:

# Register a playbooks
curl -X POST "http://localhost:8082/catalog/register" \
-H "Content-Type: application/json" \
-d '{
"content_base64": "'"$(base64 -i ./path/to/playbooks.yaml)"'"
}'

# Execute a playbooks
curl -X POST "http://localhost:8082/playbook/execute" \
-H "Content-Type: application/json" \
-d '{
"path": "workflows/example/playbooks",
"version": "1.0.0",
"input_payload": {
"param1": "value1",
"param2": "value2"
}
}'

Mounting Volumes

You can mount volumes to persist data and share files with the Docker container:

docker run -p 8082:8082 \
-v $(pwd)/playbooks:/app/playbooks \
-v $(pwd)/data:/app/data \
noetl/noetl:latest

This mounts the local playbooks and data directories to the corresponding directories in the Docker container.

Environment Variables

You can pass environment variables to the Docker container:

docker run -p 8082:8082 \
-e POSTGRES_HOST=postgres \
-e POSTGRES_PORT=5432 \
-e POSTGRES_USER=noetl \
-e POSTGRES_PASSWORD=noetl \
-e POSTGRES_DB=noetl \
noetl/noetl:latest

Docker Compose Configuration

The default docker-compose.yaml file includes the following services:

  • noetl: The NoETL server
  • postgres: PostgreSQL database for storing playbook data

You can customize the Docker Compose configuration by editing the docker-compose.yaml file.

Customizing the Docker Image

If you need to customize the Docker image, you can create your own Dockerfile based on the official NoETL image:

FROM noetl/noetl:latest

# Install additional dependencies
RUN pip install some-package

# Add custom files
COPY ./custom_playbooks /app/playbooks

# Set environment variables
ENV SOME_VARIABLE=some_value

# Set the working directory
WORKDIR /app

# Set the entrypoint
ENTRYPOINT ["noetl", "server"]

Troubleshooting

Container Fails to Start

If the container fails to start, check the logs:

docker logs noetl

Cannot Connect to the Server

If you cannot connect to the NoETL server, check that the port is correctly mapped:

docker ps

Make sure the container is running and the port mapping is correct (e.g., 0.0.0.0:8082->8082/tcp).

Database Connection Issues

If NoETL cannot connect to the PostgreSQL database, check the environment variables and network configuration:

# Check the network
docker network ls
docker network inspect noetl_default

# Check the PostgreSQL container
docker logs postgres

Next Steps