Services
Define containerized services deployed with interceptor sidecars for traffic capture.
Required fields
| Field | Type | Description |
|---|---|---|
type | "SERVICE" | Item type |
name | string | Unique name (1-63 chars, lowercase alphanumeric + hyphens, must start/end with alphanumeric). Used as DNS hostname. |
port | integer | Port the service listens on (1-65535) |
healthCheck | string | HTTP path for health checks (e.g., /health) |
Optional fields
| Field | Type | Default | Description |
|---|---|---|---|
description | string | — | Human-readable description (max 500 chars) |
image | string | — | Docker image URI (e.g., my-service:latest) |
uiPath | string | — | URL path to service's UI (e.g., /) — enables "Open UI" button |
debugPort | integer | — | Remote debugging port (e.g., 9229 for Node.js --inspect) |
env | array | — | Environment variables (see below) |
minCpu | number | — | Minimum CPU cores (e.g., 0.25) |
minMemory | number | — | Minimum memory in MB |
maxCpu | number | — | Maximum CPU cores |
maxMemory | number | — | Maximum memory in MB |
Environment variables
Environment variables use an array of objects with name and value fields — not a flat key-value object:
"env": [
{ "name": "DATABASE_URL", "value": "postgresql://dokkimi:dokkimi@postgres-db:5432/dokkimi" },
{ "name": "REDIS_URL", "value": "redis://:dokkimi@redis-cache:6379" },
{ "name": "NODE_ENV", "value": "test" }
] Full example
{
"type": "SERVICE",
"name": "api-gateway",
"image": "api-gateway:latest",
"port": 3000,
"healthCheck": "/health",
"uiPath": "/",
"debugPort": 9229,
"env": [
{ "name": "DATABASE_URL", "value": "postgresql://dokkimi:dokkimi@postgres-db:5432/dokkimi" },
{ "name": "REDIS_URL", "value": "redis://:dokkimi@redis-cache:6379" },
{ "name": "USER_SERVICE_URL", "value": "http://user-service:3000" },
{ "name": "NODE_ENV", "value": "test" }
],
"minCpu": 0.25,
"minMemory": 256,
"maxCpu": 1,
"maxMemory": 1024
} DNS and inter-service communication
Service names are DNS hostnames within the Docker network. Use the name of another item as the hostname when one service connects to another. For example, if you have a database item named postgres-db, your service connects to it at postgres-db:5432.
Naming rules
Item names must be lowercase, alphanumeric with hyphens, start and end with an alphanumeric character, and be 1-63 characters long. They're used as DNS hostnames in the Docker network.
Pattern: ^[a-z0-9][a-z0-9-]*[a-z0-9]$
- Good:
my-service,api-gateway,user-svc - Bad:
MyService,my_service,-start-with-dash