206 lines
6.7 KiB
YAML
206 lines
6.7 KiB
YAML
---
|
|
name: agent-call
|
|
services:
|
|
rabbitmq:
|
|
image: >-
|
|
rabbitmq:4.1-management-alpine@sha256:eb6736723c5d0831ab12d29e7a2b8ee1082f744370c2a784b50b84b3b4d6d030
|
|
restart: unless-stopped
|
|
init: true
|
|
environment:
|
|
RABBITMQ_DEFAULT_USER: >-
|
|
${RABBITMQ_DEFAULT_USER:?Set RABBITMQ_DEFAULT_USER}
|
|
RABBITMQ_DEFAULT_PASS: >-
|
|
${RABBITMQ_DEFAULT_PASS:?Set RABBITMQ_DEFAULT_PASS}
|
|
healthcheck:
|
|
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 12
|
|
ports:
|
|
- "127.0.0.1:${RABBITMQ_PORT:-5672}:5672"
|
|
volumes:
|
|
- rabbitmq_data:/var/lib/rabbitmq
|
|
logging:
|
|
driver: json-file
|
|
options: {max-size: "10m", max-file: "3"}
|
|
|
|
agent-call:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
init: true
|
|
depends_on:
|
|
rabbitmq:
|
|
condition: service_healthy
|
|
ports:
|
|
- "127.0.0.1:${AGENT_CALL_PORT:-18080}:8080"
|
|
environment:
|
|
AGENT_CALL_MODE: "mock"
|
|
BROKER_MODE: "rabbit"
|
|
RABBITMQ_URL: "${RABBITMQ_URL:?Set RABBITMQ_URL}"
|
|
HTTP_TOKENS: "${HTTP_TOKENS:?Set HTTP_TOKENS}"
|
|
AI_CONFIG_ISSUER: "${AI_CONFIG_ISSUER:-}"
|
|
AI_CONFIG_AUDIENCE: "${AI_CONFIG_AUDIENCE:-}"
|
|
AGENT_CALL_SIP_READONLY_URL: "${AGENT_CALL_SIP_READONLY_URL:-}"
|
|
AGENT_CALL_SIP_READONLY_TOKEN: "${AGENT_CALL_SIP_READONLY_TOKEN:-}"
|
|
AGENT_CALL_SIP_READONLY_CA_FILE: >-
|
|
${AGENT_CALL_SIP_READONLY_CA_FILE:-}
|
|
AGENT_CALL_SIP_READONLY_TIMEOUT_SECONDS: >-
|
|
${AGENT_CALL_SIP_READONLY_TIMEOUT_SECONDS:-5}
|
|
volumes:
|
|
- agent_call_data:/data
|
|
read_only: false
|
|
cap_drop: [ALL]
|
|
security_opt: [no-new-privileges:true]
|
|
pids_limit: 256
|
|
mem_limit: 512m
|
|
cpus: 2
|
|
logging:
|
|
driver: json-file
|
|
options: {max-size: "10m", max-file: "3"}
|
|
|
|
cell-worker:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
profiles: ["real-cell"]
|
|
restart: unless-stopped
|
|
init: true
|
|
entrypoint: ["python", "-m", "agent_call.cell_worker_main"]
|
|
network_mode: host
|
|
depends_on:
|
|
rabbitmq:
|
|
condition: service_healthy
|
|
environment:
|
|
AGENT_CALL_AI_PROFILE: >-
|
|
${AGENT_CALL_AI_PROFILE:-/app/configs/ai-test.bailian.example.yaml}
|
|
AGENT_CALL_PROMPT_FILE: >-
|
|
${AGENT_CALL_PROMPT_FILE:-/app/prompts/test-call.txt}
|
|
AGENT_CALL_TENANT_KEY: >-
|
|
${AGENT_CALL_TENANT_KEY:?Set AGENT_CALL_TENANT_KEY}
|
|
AGENT_CALL_EXECUTION_LEDGER: >-
|
|
${AGENT_CALL_EXECUTION_LEDGER:-/data/cell-executions.sqlite3}
|
|
RABBITMQ_URL: "${RABBITMQ_URL:?Set RABBITMQ_URL}"
|
|
BAILIAN_API_KEY: "${BAILIAN_API_KEY:?Set BAILIAN_API_KEY}"
|
|
BAILIAN_BASE_URL: "${BAILIAN_BASE_URL:?Set BAILIAN_BASE_URL}"
|
|
BAILIAN_WSS_BASE_URL: "${BAILIAN_WSS_BASE_URL:?Set BAILIAN_WSS_BASE_URL}"
|
|
BAILIAN_TTS_WSS_BASE_URL: "${BAILIAN_TTS_WSS_BASE_URL:-}"
|
|
BAILIAN_TTS_MODEL: "${BAILIAN_TTS_MODEL:-cosyvoice-v3.5-plus}"
|
|
BAILIAN_TTS_VOICE: "${BAILIAN_TTS_VOICE:?Set BAILIAN_TTS_VOICE}"
|
|
BAILIAN_ASR_MODEL: "${BAILIAN_ASR_MODEL:-fun-asr-realtime}"
|
|
CELL_ARI_URL: "${CELL_ARI_URL:-http://127.0.0.1:8088}"
|
|
CELL_ARI_USERNAME: "${CELL_ARI_USERNAME:-outbound}"
|
|
CELL_ARI_PASSWORD: "${CELL_ARI_PASSWORD:?Set CELL_ARI_PASSWORD}"
|
|
CELL_ARI_APP: "${CELL_ARI_APP:-agent-call}"
|
|
CELL_SIP_TRUNK_ID: "${CELL_SIP_TRUNK_ID:?Set CELL_SIP_TRUNK_ID}"
|
|
CELL_CALLER_ID: "${CELL_CALLER_ID:?Set CELL_CALLER_ID}"
|
|
CELL_DIAL_PREFIX: "${CELL_DIAL_PREFIX:-7089}"
|
|
CELL_ROUTE_MAP_JSON: "${CELL_ROUTE_MAP_JSON:-}"
|
|
CELL_RTP_BIND_HOST: "${CELL_RTP_BIND_HOST:-127.0.0.1}"
|
|
CELL_RECORDING_DIR: "${CELL_RECORDING_DIR:-/data/recordings}"
|
|
volumes:
|
|
- agent_call_data:/data
|
|
tmpfs:
|
|
- /tmp:rw,noexec,nosuid,size=64m
|
|
read_only: false
|
|
cap_drop: [ALL]
|
|
security_opt: [no-new-privileges:true]
|
|
pids_limit: 256
|
|
mem_limit: 1g
|
|
cpus: 2
|
|
logging:
|
|
driver: json-file
|
|
options: {max-size: "10m", max-file: "3"}
|
|
|
|
sip-management:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
profiles: ["sip-management"]
|
|
restart: unless-stopped
|
|
init: true
|
|
entrypoint: ["python", "-m", "agent_call.sip_management_main"]
|
|
ports:
|
|
- "127.0.0.1:${SIP_MANAGEMENT_PORT:-18090}:8090"
|
|
environment:
|
|
SIP_MANAGEMENT_MODE: "${SIP_MANAGEMENT_MODE:-mock}"
|
|
SIP_MANAGEMENT_HOST: "0.0.0.0"
|
|
SIP_MANAGEMENT_PORT: "8090"
|
|
SIP_MANAGEMENT_DB: "/data/sip-management.sqlite3"
|
|
SIP_ADMIN_TOKENS: "${SIP_ADMIN_TOKENS:?Set SIP_ADMIN_TOKENS}"
|
|
SIP_READ_TOKENS: "${SIP_READ_TOKENS:?Set SIP_READ_TOKENS}"
|
|
SIP_CELL_TLS_CA_FILE: "${SIP_CELL_TLS_CA_FILE:-/run/sip-tls/ca.pem}"
|
|
SIP_CELL_TLS_CERT_FILE: >-
|
|
${SIP_CELL_TLS_CERT_FILE:-/run/sip-tls/client.pem}
|
|
SIP_CELL_TLS_KEY_FILE: >-
|
|
${SIP_CELL_TLS_KEY_FILE:-/run/sip-tls/client-key.pem}
|
|
SIP_CELL_PUBLISH_TIMEOUT_SECONDS: >-
|
|
${SIP_CELL_PUBLISH_TIMEOUT_SECONDS:-15}
|
|
PYTHONDONTWRITEBYTECODE: "1"
|
|
volumes:
|
|
- sip_management_data:/data
|
|
- "${SIP_CELL_TLS_DIR:-./secrets/sip-management}:/run/sip-tls:ro"
|
|
tmpfs:
|
|
- /tmp:rw,noexec,nosuid,size=16m
|
|
read_only: true
|
|
cap_drop: [ALL]
|
|
security_opt: [no-new-privileges:true]
|
|
pids_limit: 128
|
|
mem_limit: 256m
|
|
cpus: 1
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- python
|
|
- -c
|
|
- >-
|
|
import urllib.request;
|
|
urllib.request.urlopen(
|
|
'http://127.0.0.1:8090/healthz/live', timeout=2
|
|
)
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 12
|
|
logging:
|
|
driver: json-file
|
|
options: {max-size: "10m", max-file: "3"}
|
|
|
|
asr-web:
|
|
build:
|
|
context: ./services/asr-web
|
|
restart: unless-stopped
|
|
init: true
|
|
read_only: true
|
|
cap_drop: [ALL]
|
|
security_opt: [no-new-privileges:true]
|
|
pids_limit: 128
|
|
mem_limit: 256m
|
|
cpus: 1
|
|
ports:
|
|
- "127.0.0.1:${ASR_WEB_PORT:-18088}:8080"
|
|
environment:
|
|
ASR_LISTEN: "0.0.0.0:8080"
|
|
ASR_WEB_TOKEN: "${ASR_WEB_TOKEN:?Set ASR_WEB_TOKEN}"
|
|
PUBLIC_ORIGIN: "${PUBLIC_ORIGIN:-}"
|
|
BAILIAN_API_KEY: "${BAILIAN_API_KEY:-}"
|
|
BAILIAN_WS: "${BAILIAN_WS:-}"
|
|
FUNASR_API_KEY: "${FUNASR_API_KEY:-}"
|
|
FUNASR_WS: "${FUNASR_WS:-}"
|
|
BAILIAN_ASR_MODELS: "${BAILIAN_ASR_MODELS:-fun-asr-realtime}"
|
|
VOLC_APP_KEY: "${VOLC_APP_KEY:-}"
|
|
VOLC_APP_ID: "${VOLC_APP_ID:-}"
|
|
VOLC_ACCESS_TOKEN: "${VOLC_ACCESS_TOKEN:-}"
|
|
VOLC_RESOURCE_ID: "${VOLC_RESOURCE_ID:-volc.bigasr.sauc.duration}"
|
|
VOLC_WS: "${VOLC_WS:-wss://openspeech.bytedance.com/api/v3/sauc/bigmodel}"
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
volumes:
|
|
rabbitmq_data:
|
|
agent_call_data:
|
|
sip_management_data:
|