docker-compose.yaml•7.05 kB
services:
registry:
build:
context: .
dockerfile: registry/Dockerfile
environment:
UVICORN_PORT: ${UVICORN_PORT:-80}
POSTGRES_HOST: ${POSTGRES_HOST:-registry_postgres}
POSTGRES_USER: ${POSTGRES_USER:-change_me}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change_me}
POSTGRES_DB: ${POSTGRES_DB:-registry}
POSTGRES_PORT: ${POSTGRES_PORT:-}
OPENAI_API_KEY: ${OPENAI_API_KEY}
OPENAI_BASE_URL: ${OPENAI_BASE_URL:-}
LLM_PROXY: ${LLM_PROXY:-}
LLM_MODEL: ${LLM_MODEL:-}
HEALTHCHECK_RUNNING_INTERVAL: ${HEALTHCHECK_RUNNING_INTERVAL:-}
DEEP_RESEARCH_SERVER_NAME: ${DEEP_RESEARCH_SERVER_NAME:-}
TOOL_RETRY_COUNT: ${TOOL_RETRY_COUNT:-}
TOOL_WAIT_INTERVAL: ${TOOL_WAIT_INTERVAL:-}
image: ${REGISTRY_IMAGE:-registry}:${CI_COMMIT_BRANCH:-local}
container_name: registry
pull_policy: always
restart: always
depends_on:
registry_postgres:
condition: service_healthy
restart: true
profiles:
- main
volumes:
- /var/lib/hipasus/registry/api/logs:/workspace/logs
healthcheck:
test: curl -f http://localhost:${UVICORN_PORT:-80}/healthcheck
interval: 15s
timeout: 5s
retries: 3
start_period: 15s
command: start.sh
registry_mcp_server:
build:
context: .
dockerfile: mcp_server/Dockerfile
environment:
- MCP_PORT
- LOG_LEVEL
- REGISTRY_URL
- OPENAI_API_KEY
- OPENAI_BASE_URL
- LLM_PROXY
- LLM_MODEL
image: ${MCP_REGISTRY_IMAGE:-registry_mcp}:${CI_COMMIT_BRANCH:-local}
container_name: registry_mcp_server
pull_policy: always
restart: always
depends_on:
registry:
condition: service_healthy
restart: true
healthcheck:
test: python3 -m mcp_server.scripts.mcp_health_check
interval: 15s
timeout: 5s
retries: 3
start_period: 15s
profiles:
- main
volumes:
- /var/lib/hipasus/registry/mcp_server/logs:/workspace/logs
command: start.sh
registry_deploy_worker:
container_name: registry_deploy_worker
image: ${WORKER_IMAGE_NAME:-registry_worker}:${CI_COMMIT_BRANCH:-local}
build:
context: .
dockerfile: worker/Dockerfile
pull_policy: always
environment:
LOG_LEVEL: ${LOG_LEVEL}
POSTGRES_HOST: ${POSTGRES_HOST:-registry_postgres}
POSTGRES_USER: ${POSTGRES_USER:-change_me}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change_me}
POSTGRES_DB: ${POSTGRES_DB:-registry}
POSTGRES_PORT: ${POSTGRES_PORT:-5432}
OPENAI_API_KEY: ${OPENAI_API_KEY}
OPENAI_BASE_URL: ${OPENAI_BASE_URL:-}
LLM_PROXY: ${LLM_PROXY:-}
LLM_MODEL: ${LLM_MODEL:-}
DOCKERHUB_LOGIN: ${DOCKERHUB_LOGIN}
DOCKERHUB_PASSWORD: ${DOCKERHUB_PASSWORD}
DEPLOYMENT_NETWORK: ${DOCKER_NETWORK:-portal_network}
HEALTHCHECK_RUNNING_INTERVAL: ${HEALTHCHECK_RUNNING_INTERVAL:-}
DEEP_RESEARCH_SERVER_NAME: ${DEEP_RESEARCH_SERVER_NAME:-}
TOOL_RETRY_COUNT: ${TOOL_RETRY_COUNT:-}
TOOL_WAIT_INTERVAL: ${TOOL_WAIT_INTERVAL:-}
profiles:
- main
depends_on:
registry_postgres:
condition: service_healthy
restart: true
portal_kafka:
condition: service_healthy
restart: true
volumes:
- /var/lib/hipasus/registry/worker/logs:/workspace/logs
- /var/run/docker.sock:/var/run/docker.sock
restart: always
command: worker-start.sh
portal_zookeeper:
image: confluentinc/cp-zookeeper:7.3.2
container_name: portal_zookeeper
ports:
- "2181:2181"
profiles:
- main
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_SERVERS: portal_zookeeper:2888:3888
healthcheck:
test: nc -z localhost 2181 || exit -1
interval: 30s
timeout: 20s
retries: 5
restart: always
portal_kafka:
image: confluentinc/cp-kafka:7.3.2
container_name: portal_kafka
profiles:
- main
environment:
KAFKA_ADVERTISED_LISTENERS: INTERNAL://portal_kafka:19092,DOCKER://127.0.0.1:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,DOCKER:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "portal_zookeeper:2181"
KAFKA_BROKER_ID: 1
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_JMX_PORT: 9999
KAFKA_JMX_HOSTNAME: ${DOCKER_HOST_IP:-127.0.0.1}
KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer
KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true"
healthcheck:
test: kafka-cluster cluster-id --bootstrap-server 127.0.0.1:29092 || exit 1
interval: 30s
timeout: 20s
retries: 5
depends_on:
portal_zookeeper:
condition: service_healthy
restart: true
restart: always
registry_postgres:
container_name: registry_postgres
image: postgres:17
environment:
POSTGRES_USER: ${POSTGRES_USER:-change_me}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change_me}
POSTGRES_DB: ${POSTGRES_DB:-registry}
volumes:
- /var/lib/hipasus/registry/pg_data:/var/lib/postgresql/data
command: postgres -c 'max_connections=500'
profiles:
- main
healthcheck:
test: pg_isready -U ${POSTGRES_USER:-change_me} -d ${POSTGRES_DB:-registry}
interval: 7s
timeout: 5s
retries: 5
start_period: 5s
restart: always
registry_healthchecker:
container_name: registry_healthchecker
image: ${HEALTHCHECKER_IMAGE_NAME:-registry_healthchecker}:${CI_COMMIT_BRANCH:-local}
build:
context: .
dockerfile: healthchecker/Dockerfile
pull_policy: always
environment:
LOG_LEVEL: ${LOG_LEVEL}
POSTGRES_HOST: ${POSTGRES_HOST:-registry_postgres}
POSTGRES_USER: ${POSTGRES_USER:-change_me}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change_me}
POSTGRES_DB: ${POSTGRES_DB:-registry}
POSTGRES_PORT: ${POSTGRES_PORT:-5432}
OPENAI_API_KEY: ${OPENAI_API_KEY}
OPENAI_BASE_URL: ${OPENAI_BASE_URL:-}
LLM_PROXY: ${LLM_PROXY:-}
LLM_MODEL: ${LLM_MODEL:-}
DOCKERHUB_LOGIN: ${DOCKERHUB_LOGIN}
DOCKERHUB_PASSWORD: ${DOCKERHUB_PASSWORD}
DEPLOYMENT_NETWORK: ${DOCKER_NETWORK:-portal_network}
HEALTHCHECK_RUNNING_INTERVAL: ${HEALTHCHECK_RUNNING_INTERVAL:-}
DEEP_RESEARCH_SERVER_NAME: ${DEEP_RESEARCH_SERVER_NAME:-}
TOOL_RETRY_COUNT: ${TOOL_RETRY_COUNT:-}
TOOL_WAIT_INTERVAL: ${TOOL_WAIT_INTERVAL:-}
profiles:
- main
depends_on:
registry:
condition: service_healthy
restart: true
restart: always
command: worker-start.sh
networks:
default:
name: ${DOCKER_NETWORK:-portal_network}
external: true