# Docker (BETA)

Run Kameleo inside a Windows-based Docker container when you need an easily reproducible, isolated environment (CI, ephemeral workers, remote hosts) while still exposing the Local API on your host.

# Prerequisites

  • Docker compatible Windows host OS
  • Basic Docker experience (running containers, mounting volumes, using compose files)
  • Valid Kameleo account credentials (email & password)

# Container layout & persistence

Kameleo runs under the built‑in, non‑administrative Windows account ContainerUser inside the image (not Administrator). This improves isolation and reduces the surface for privilege escalation.

Inside the container application data (profiles, kernels) resides at C:\data directory. Mount this path to a host directory to persist state across container recreations.

# Configuration methods

You can configure Kameleo inside the container using the same precedence described in Configure. In container workflows you typically rely on environment variables or command-line flags appended to docker run.

Accepted environment variable names mirror the CLI keys with uppercase; see the full list and defaults in Configuration options.

Mandatory credentials must always be provided, without them the app will not authenticate and container startup will fail.

# Steps

# 1. Create a host directory for data

Example (PowerShell on host):

New-Item -ItemType Directory -Path "C:\kameleo-data" -Force | Out-Null

# 2. Run the container

Expose port 5050, pass credentials, and mount persistent data:

docker pull kameleo/kameleo-app:latest
docker run -p 5050:5050 -e EMAIL="email" -e PASSWORD="pw" -v "C:\kameleo-data:C:\data" kameleo/kameleo-app:latest

Alternatively use command-line flags (equivalent outcome):

docker pull kameleo/kameleo-app:latest
docker run -p 5050:5050 -v "C:\kameleo-data:C:\data" kameleo/kameleo-app:latest email=email password=pw

# 3. Verify the service

Open in a browser on the host and expect the Swagger UI to load:

http://localhost:5050/swagger

# Example with docker-compose

Use docker-compose.yml for repeatable infrastructure or CI pipelines:

services:
    kameleo-app:
        image: kameleo/kameleo-app:latest
        ports:
            - "5050:5050"
        environment:
            EMAIL: your-email@example.com
            PASSWORD: your-password
        volumes:
            - C:\kameleo-data:C:\data
        restart: unless-stopped

# Health checks

The published image already defines a HEALTHCHECK that periodically queries the /general/healthcheck endpoint and marks the container as healthy once Kameleo is responsive. Nothing extra is required; the health status is visible via the State column:

docker ps

If you build a custom derivative image (e.g., adding tools) and replace the base CMD, ensure you keep or re-add a healthcheck so orchestrators wait for readiness.