-
Notifications
You must be signed in to change notification settings - Fork 0
deployment
This guide provides information on deploying the Teko AI agent system using Docker containers and managing releases.
Teko uses Docker to create reproducible, portable environments that contain the complete application stack with all dependencies.
The Teko container includes:
- PHP 8.2+ with Laravel framework
- Python 3.10+ with LangChain dependencies
- Supervisor for process management
- MySQL client libraries
Teko Docker images are stored in GitHub Container Registry (GHCR):
ghcr.io/[owner]/teko:[tag]
Where:
-
[owner]is the GitHub repository owner -
[tag]is eitherlatestor a version identifier (YYYYMMDD-commit)
To pull the latest container:
docker pull ghcr.io/[owner]/teko:latestOr pull a specific version:
docker pull ghcr.io/[owner]/teko:20250429-a1b2c3dThe Teko container requires these environment variables:
# Database Configuration
DB_CONNECTION=mysql
DB_HOST=your-mysql-host
DB_PORT=3306
DB_DATABASE=teko
DB_USERNAME=your-db-user
DB_PASSWORD=your-db-password
# API Keys
OPENAI_API_KEY=your-openai-key
# Application Settings
APP_URL=https://your-teko-instance.com
APP_ENV=production
APP_DEBUG=false
Basic run command:
docker run -d --name teko \
-p 8080:9000 \
--env-file .env \
ghcr.io/[owner]/teko:latestWith Docker Compose:
version: '3'
services:
teko:
image: ghcr.io/[owner]/teko:latest
ports:
- "8080:9000"
env_file:
- .env
depends_on:
- mysql
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: your-root-password
MYSQL_DATABASE: teko
MYSQL_USER: teko
MYSQL_PASSWORD: your-password
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:Teko uses GitHub Releases for versioning, which are automatically created by the CI/CD pipeline.
Releases follow this naming pattern:
- Git tags:
v1.0.0,v1.1.0, etc. - Auto-generated:
vYYYYMMDD-commit(e.g.,v20250429-a1b2c3d)
For local development:
# Run with local PHP & MySQL
php artisan serve
# Run with Docker
make docker-build
make docker-runStaging environments can be configured to automatically deploy the latest container from GHCR when a new release is created.
Production deployments should always use a specific version tag rather than latest:
docker pull ghcr.io/[owner]/teko:v1.0.0To rollback to a previous version:
- Identify the previous working release tag
- Pull and deploy that specific container:
docker pull ghcr.io/[owner]/teko:v0.9.0
docker stop teko
docker rm teko
docker run -d --name teko -p 8080:9000 --env-file .env ghcr.io/[owner]/teko:v0.9.0The container provides health check endpoints:
-
/api/health- Basic application health -
/api/health/db- Database connectivity -
/api/health/agents- AI agent system status