Files
comet-ml--opik/deployment/docker-compose/README.md
T
wehub-resource-sync 5a558eb09e
TypeScript SDK Compatibility V1.x E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / TypeScript SDK Compatibility V1.x E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
TypeScript SDK E2E Tests / TypeScript SDK E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
Python SDK E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK E2E Tests / Python SDK E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK E2E Tests / build-opik (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Python SDK Compatibility V1.x E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK E2E Tests / build-opik (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer E2E Tests Python ${{matrix.python_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer Integration Smoke Tests (push) Has been cancelled
🐙 Code Quality / detect (push) Has been cancelled
🐙 Code Quality / lint (${{ matrix.leg.name }}) (push) Has been cancelled
🐙 Code Quality / summary (push) Has been cancelled
TypeScript SDK Library Integration Tests / Check Secrets (push) Has been cancelled
TypeScript SDK Library Integration Tests / opik-vercel (Vercel AI SDK / eve) (push) Has been cancelled
SDK Library Integration Tests Runner / Check Secrets (push) Has been cancelled
SDK Library Integration Tests Runner / Missed OpenAI API Key Warning (push) Has been cancelled
SDK Library Integration Tests Runner / Build (push) Has been cancelled
SDK Library Integration Tests Runner / openai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_legacy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / llama_index_tests (push) Has been cancelled
SDK Library Integration Tests Runner / anthropic_tests (push) Has been cancelled
SDK Library Integration Tests Runner / mistral_tests (push) Has been cancelled
SDK Library Integration Tests Runner / groq_tests (push) Has been cancelled
SDK Library Integration Tests Runner / aisuite_tests (push) Has been cancelled
SDK Library Integration Tests Runner / haystack_tests (push) Has been cancelled
SDK Library Integration Tests Runner / dspy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v1_tests (push) Has been cancelled
SDK Library Integration Tests Runner / genai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_legacy_1_3_0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / evaluation_metrics_tests (push) Has been cancelled
SDK Library Integration Tests Runner / bedrock_tests (push) Has been cancelled
SDK Library Integration Tests Runner / litellm_tests (push) Has been cancelled
SDK Library Integration Tests Runner / harbor_tests (push) Has been cancelled
SDK Library Integration Tests Runner / Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / render-equality (push) Has been cancelled
Opik Optimizer - Unit Tests / Opik Optimizer Unit Tests Python ${{matrix.python_version}} (push) Has been cancelled
Python BE E2E Tests / Python BE E2E (push) Has been cancelled
Python Backend Tests / run-python-backend-tests (push) Has been cancelled
Python SDK Unit Tests / Python SDK Unit Tests ${{matrix.python_version}} (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
SDK E2E Libraries Integration Tests / Check Secrets (push) Has been cancelled
SDK E2E Libraries Integration Tests / Missed OpenAI API Key Warning (push) Has been cancelled
SDK E2E Libraries Integration Tests / build-opik (push) Has been cancelled
SDK E2E Libraries Integration Tests / E2E Lib Integration Python ${{matrix.python_version}} (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-gemini) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-langchain) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-openai) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-otel) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-vercel) (push) Has been cancelled
TypeScript SDK Build & Publish / build-and-publish (push) Has been cancelled
TypeScript SDK Unit Tests / Test on Node ${{ matrix.node-version }} (push) Has been cancelled
Backend Tests / discover-tests (push) Has been cancelled
Backend Tests / ${{ matrix.name }} (push) Has been cancelled
Build and Publish SDK / build-and-publish (push) Has been cancelled
Build Opik Docker Images / set-version (push) Has been cancelled
Build Opik Docker Images / build-backend (push) Has been cancelled
Build Opik Docker Images / build-sandbox-executor-python (push) Has been cancelled
Build Opik Docker Images / build-python-backend (push) Has been cancelled
Build Opik Docker Images / build-frontend (push) Has been cancelled
Build Opik Docker Images / create-git-tag (push) Has been cancelled
ClickHouse Migration Cluster Check / validate-clickhouse-migrations (push) Has been cancelled
Docs - Publish / run (push) Has been cancelled
E2E Tests - Post Merge (v2) / 🧪 E2E v2 Tests (${{ github.event.inputs.tier || 't1' }}) (push) Has been cancelled
E2E Tests - Post Merge (v2) / 📢 Slack Notification (push) Has been cancelled
Frontend Unit Tests / Test on Node 20 (push) Has been cancelled
Guardrails E2E Tests / Select Python version matrix (push) Has been cancelled
Guardrails E2E Tests / Guardrails E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Guardrails E2E Tests / 📢 Slack Notification (push) Has been cancelled
Guardrails Backend Unit Tests / Guardrails Backend Unit Tests (push) Has been cancelled
Guardrails Backend Unit Tests / 📢 Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v3.21.0) (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v4.2.0) (push) Has been cancelled
Lint Opik Helm Chart / unittest-helm-chart (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:25:44 +08:00

217 lines
6.5 KiB
Markdown

# Run Opik with `docker compose`
## Installation pre-requirements for local installation
- Docker: https://docs.docker.com/engine/install/
- Docker Compose: https://docs.docker.com/compose/install/
## Service Profiles for Development
Opik supports Docker Compose profiles to start different combinations of services for various development scenarios:
### Available Profiles
1. **Infrastructure Services** (always enabled): MySQL, Redis, ClickHouse, ZooKeeper, MinIO etc.
2. **Backend Services** (`backend`): Infrastructure (automatic) + Backend, Python Backend services etc.
3. **Opik Services** (`opik`): The full Opik suite including all infrastructure and services, except for Guardrails services
4. **Guardrails** (`guardrails`): Guardrails services, meant to be combined with other profiles. Guardrails are always optional by default, even for the full Opik suite, unless explicitly enabled
5. **Opik with OpenTelemetry** (`opik-otel`): The full Opik suite plus Jaeger and OpenTelemetry Collector for observability
### Profile Usage Examples
**Start only infrastructure services (default behavior when no profile):**
```bash
docker compose up -d
```
**Start infrastructure + backend services:**
```bash
docker compose --profile backend up -d
```
**Start full Opik suite (all infrastructure and services, except guardrails):**
```bash
docker compose --profile opik up -d
```
**Start backend + guardrails:**
```bash
docker compose --profile backend --profile guardrails up -d
```
**Start full Opik suite + guardrails:**
```bash
docker compose --profile opik --profile guardrails up -d
```
**Start full Opik suite + OpenTelemetry:**
```bash
docker compose --profile opik-otel up -d
```
**Note**: Infrastructure services (databases, caches, storage etc.) always start by default, as that's the expected behaviour for services with no profile, see [Using profiles with Compose](https://docs.docker.com/compose/how-tos/profiles/). Any profile such as Backend, full Opik suite etc. always automatically include the infrastructure.
## Run `docker compose` using the images
If you want to use a specific version, set Opik version like:
```bash
export OPIK_VERSION=0.1.10
```
Otherwise, it will use the latest images.
Run `docker compose` from the root of the project:
```bash
cd deployment/docker-compose
# Optionally, you can force a pull of the latest images
docker compose --profile opik pull
docker compose -f docker-compose.yaml --profile opik up -d
```
## Run `docker compose` with building application from latest code
From the root of the project:
```bash
cd deployment/docker-compose
# Optionally, you can force a pull of the latest images
docker compose --profile opik pull
# Build the images
docker compose -f docker-compose.yaml --profile opik up -d --build
# Alternatively, you can force a pull of the latest images and build the images
docker compose -f docker-compose.yaml --profile opik up -d --build --pull always
```
## Exposing Database and Backend Ports for Local Development
If you're a developer and need to expose the database and backend ports to your host machine for local testing or
debugging, you can use the provided Docker Compose override file.
### Steps to Expose Ports
Run the following command to start the services and expose the ports:
```bash
# Optionally, you can force a pull of the latest images
docker compose --profile opik pull
docker compose -f docker-compose.yaml -f docker-compose.override.yaml --profile opik up -d
```
This will expose the following services to the host machine:
- Redis: Available on port 6379.
- ClickHouse: Available on ports 8123 (HTTP) and 9000 (Native Protocol).
- Zookeeper: Available on port 2181.
- MySQL: Available on port 3306.
- Backend: Available on ports 8080 (HTTP) and 3003 (OpenAPI specification).
- Python backend: Available on port 8000 (HTTP).
- Frontend: Available on port 5173.
## Binding Ports in Docker Compose
By default, Docker Compose binds exposed container ports to 0.0.0.0, making them accessible from any network interface on the host. To restrict access, specify a specific IP in the ports section, such as 127.0.0.1:8080:80, to limit exposure to the local machine.
This can be done in `docker-compose.yaml` file
```
frontend:
ports:
- "127.0.0.1:5173:5173" # Frontend server port
```
## Changing the Frontend Port
If port 5173 is already taken on your host (e.g. another Vite dev server or
local app you can't move), set `NGINX_PORT` before bringing the stack up:
```bash
# UI will be available at http://localhost:5293
NGINX_PORT=5293 ./opik.sh
```
`NGINX_PORT` is honored by the frontend container's port mapping, healthcheck,
nginx config, and the backend's internal reverse-proxy URL. Use
`OPIK_PORT_OFFSET=N` instead if you'd like to shift every Opik port (frontend,
backend, MySQL, Redis, etc.) by the same delta.
## Run Opik backend locally and the rest of the components with `docker compose`
1. In `nginx_default_local.conf` replace:
```bash
http://backend:8080
```
With your localhost.
For Mac/Windows (Docker Desktop):
```bash
http://host.docker.internal:8080
```
For Linux:
```bash
http://172.17.0.1:8080
```
2. Run `docker compose` including exposing ports to localhost:
```bash
# Optionally, you can force a pull of the latest images
docker compose --profile opik pull
docker compose -f docker-compose.yaml -f docker-compose.override.yaml --profile opik up -d
```
Stop the backend container, because you don't need it.
## Opik with OpenTelemetry observability
You can run Opik with OpenTelemetry Collector and Jaeger to collect and visualize traces and logs.
### Run with OpenTelemetry
```bash
docker compose --profile opik-otel up -d
```
This will start:
- Opik Stack (Frontend, Backend, etc.)
- OpenTelemetry Collector (ports 4317, 4318, 5140/udp, etc.)
- Jaeger (UI at http://localhost:16686)
### Enable Nginx Tracing and Log Shipping
To enable Nginx OpenTelemetry tracing and ship access/error logs to the collector:
```bash
# Enable OpenTelemetry Tracing in Nginx
export OTEL_TRACE=on
# Configure Nginx to ship logs to OpenTelemetry Collector via Syslog
export NGINX_EXTRA_ACCESS_LOG="access_log syslog:server=otel-collector:5140 logger-json;"
export NGINX_EXTRA_ERROR_LOG="error_log syslog:server=otel-collector:5140 error;"
# Run with the profile
docker compose --profile opik-otel up -d
```
When enabled:
- **Nginx Traces**: Will be sent to the OTel Collector and visible in Jaeger.
- **Nginx Logs**: Will be sent via syslog to the OTel Collector.
### Stop Opik
```bash
docker compose --profile opik down
# or if running with otel profile
docker compose --profile opik-otel down
```