mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-22 03:41:43 +00:00
184 lines
6.6 KiB
YAML
184 lines
6.6 KiB
YAML
# An example of using docker-compose to start a HA model serving cluster with two controllers and one worker.
|
|
# For simplicity, we use chatgpt_proxyllm as the model for the worker, and we build a new docker image named eosphorosai/dbgpt-openai:latest.
|
|
# How to build the image:
|
|
# run `bash ./docker/base/build_proxy_image.sh` in the root directory of the project.
|
|
# If you want to use other pip index url, you can run command with `--pip-index-url` option.
|
|
# For example, `bash ./docker/base/build_proxy_image.sh --pip-index-url https://pypi.tuna.tsinghua.edu.cn/simple`
|
|
#
|
|
# How to start the cluster:
|
|
# 1. run `cd docker/compose_examples`
|
|
# 2. run `OPENAI_API_KEY="{your api key}" OPENAI_API_BASE="https://api.openai.com/v1" docker compose -f ha-cluster-docker-compose.yml up -d`
|
|
# Note: Make sure you have set the environment variables OPENAI_API_KEY.
|
|
# Optionally, if you want to use other provider(like proxy/siliconflow), you can set following environment variables:
|
|
# LLM_MODEL_PROVIDER="proxy/siliconflow" \
|
|
# LLM_MODEL_NAME="Qwen/Qwen2.5-Coder-32B-Instruct" \
|
|
# OPENAI_API_BASE="https://api.siliconflow.cn/v1" \
|
|
# OPENAI_API_KEY="${SILICONFLOW_API_KEY}" \
|
|
# EMBEDDING_MODEL_PROVIDER="proxy/openai" \
|
|
# EMBEDDING_MODEL_NAME="BAAI/bge-large-zh-v1.5" \
|
|
# EMBEDDING_MODEL_API_URL="https://api.siliconflow.cn/v1/embeddings" \
|
|
# docker compose -f ha-cluster-docker-compose.yml up -d
|
|
version: '3.10'
|
|
|
|
services:
|
|
init:
|
|
image: busybox
|
|
volumes:
|
|
- ../examples/sqls:/sqls
|
|
- ../../assets/schema/dbgpt.sql:/dbgpt.sql
|
|
- dbgpt-init-scripts:/docker-entrypoint-initdb.d
|
|
command: /bin/sh -c "cp /dbgpt.sql /docker-entrypoint-initdb.d/ && cp /sqls/* /docker-entrypoint-initdb.d/ && ls /docker-entrypoint-initdb.d/"
|
|
|
|
db:
|
|
image: mysql/mysql-server
|
|
environment:
|
|
MYSQL_USER: 'user'
|
|
MYSQL_PASSWORD: 'password'
|
|
MYSQL_ROOT_PASSWORD: 'aa123456'
|
|
ports:
|
|
- 3306:3306
|
|
volumes:
|
|
- dbgpt-myql-db:/var/lib/mysql
|
|
- ../examples/my.cnf:/etc/my.cnf
|
|
- dbgpt-init-scripts:/docker-entrypoint-initdb.d
|
|
restart: unless-stopped
|
|
networks:
|
|
- dbgptnet
|
|
depends_on:
|
|
- init
|
|
controller-1:
|
|
image: eosphorosai/dbgpt-openai:latest
|
|
# command: python packages/dbgpt-core/src/dbgpt/model/cluster/controller/controller.py -c /root/configs/ha-model-cluster.toml
|
|
command: dbgpt start controller -c /root/configs/ha-model-cluster.toml
|
|
environment:
|
|
- MYSQL_PASSWORD=aa123456
|
|
- MYSQL_HOST=db
|
|
- MYSQL_PORT=3306
|
|
- MYSQL_DATABASE=dbgpt
|
|
- MYSQL_USER=root
|
|
volumes:
|
|
- ../../:/app
|
|
- ./conf/ha-model-cluster.toml:/root/configs/ha-model-cluster.toml
|
|
restart: unless-stopped
|
|
networks:
|
|
- dbgptnet
|
|
depends_on:
|
|
- db
|
|
controller-2:
|
|
image: eosphorosai/dbgpt-openai:latest
|
|
# command: python packages/dbgpt-core/src/dbgpt/model/cluster/controller/controller.py -c /root/configs/ha-model-cluster.toml
|
|
command: dbgpt start controller -c /root/configs/ha-model-cluster.toml
|
|
environment:
|
|
- MYSQL_PASSWORD=aa123456
|
|
- MYSQL_HOST=db
|
|
- MYSQL_PORT=3306
|
|
- MYSQL_DATABASE=dbgpt
|
|
- MYSQL_USER=root
|
|
volumes:
|
|
- ../../:/app
|
|
- ./conf/ha-model-cluster.toml:/root/configs/ha-model-cluster.toml
|
|
restart: unless-stopped
|
|
networks:
|
|
- dbgptnet
|
|
depends_on:
|
|
- db
|
|
llm-worker:
|
|
image: eosphorosai/dbgpt-openai:latest
|
|
# command: python packages/dbgpt-core/src/dbgpt/model/cluster/worker/manager.py -c /root/configs/ha-model-cluster.toml
|
|
command: dbgpt start worker -c /root/configs/ha-model-cluster.toml
|
|
environment:
|
|
- WORKER_TYPE=llm
|
|
- LLM_MODEL_PROVIDER=${LLM_MODEL_PROVIDER:-proxy/openai}
|
|
- LLM_MODEL_NAME=${LLM_MODEL_NAME:-gpt-4o}
|
|
- OPENAI_API_BASE=${OPENAI_API_BASE:-https://api.openai.com/v1}
|
|
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
|
- CONTROLLER_ADDR=http://controller-1:8000,http://controller-2:8000
|
|
depends_on:
|
|
- controller-1
|
|
- controller-2
|
|
volumes:
|
|
- ../../:/app
|
|
- ./conf/ha-model-cluster.toml:/root/configs/ha-model-cluster.toml
|
|
restart: unless-stopped
|
|
networks:
|
|
- dbgptnet
|
|
ipc: host
|
|
embedding-worker:
|
|
image: eosphorosai/dbgpt-openai:latest
|
|
# command: python packages/dbgpt-core/src/dbgpt/model/cluster/worker/manager.py -c /root/configs/ha-model-cluster.toml
|
|
command: dbgpt start worker -c /root/configs/ha-model-cluster.toml
|
|
environment:
|
|
- WORKER_TYPE=text2vec
|
|
- EMBEDDING_MODEL_PROVIDER=${EMBEDDING_MODEL_PROVIDER:-proxy/openai}
|
|
- EMBEDDING_MODEL_NAME=${EMBEDDING_MODEL_NAME:-text-embedding-3-small}
|
|
- EMBEDDING_MODEL_API_URL=${EMBEDDING_MODEL_API_URL:-https://api.openai.com/v1/embeddings}
|
|
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
|
- CONTROLLER_ADDR=http://controller-1:8000,http://controller-2:8000
|
|
depends_on:
|
|
- controller-1
|
|
- controller-2
|
|
volumes:
|
|
- ../../:/app
|
|
- ./conf/ha-model-cluster.toml:/root/configs/ha-model-cluster.toml
|
|
restart: unless-stopped
|
|
networks:
|
|
- dbgptnet
|
|
ipc: host
|
|
webserver:
|
|
image: eosphorosai/dbgpt-openai:latest
|
|
# command: python packages/dbgpt-app/src/dbgpt_app/dbgpt_server.py -c /root/configs/ha-webserver.toml
|
|
command: dbgpt start webserver -c /root/configs/ha-webserver.toml
|
|
environment:
|
|
- MYSQL_PASSWORD=aa123456
|
|
- MYSQL_HOST=db
|
|
- MYSQL_PORT=3306
|
|
- MYSQL_DATABASE=dbgpt
|
|
- MYSQL_USER=root
|
|
- EMBEDDING_MODEL_NAME=${EMBEDDING_MODEL_NAME:-text-embedding-3-small}
|
|
- CONTROLLER_ADDR=http://controller-1:8000,http://controller-2:8000
|
|
depends_on:
|
|
- controller-1
|
|
- controller-2
|
|
- llm-worker
|
|
- embedding-worker
|
|
volumes:
|
|
- ../../:/app
|
|
- ./conf/ha-webserver.toml:/root/configs/ha-webserver.toml
|
|
- dbgpt-data:/app/pilot/data
|
|
- dbgpt-message:/app/pilot/message
|
|
# env_file:
|
|
# - .env.template
|
|
ports:
|
|
- 5670:5670/tcp
|
|
# webserver may be failed, it must wait all sqls in /docker-entrypoint-initdb.d execute finish.
|
|
restart: unless-stopped
|
|
networks:
|
|
- dbgptnet
|
|
apiserver:
|
|
image: eosphorosai/dbgpt-openai:latest
|
|
command: dbgpt start apiserver -c /root/configs/ha-model-cluster.toml
|
|
environment:
|
|
- CONTROLLER_ADDR=http://controller-1:8000,http://controller-2:8000
|
|
depends_on:
|
|
- controller-1
|
|
- controller-2
|
|
- llm-worker
|
|
- embedding-worker
|
|
volumes:
|
|
- ../../:/app
|
|
- ./conf/ha-model-cluster.toml:/root/configs/ha-model-cluster.toml
|
|
ports:
|
|
- 8100:8100/tcp
|
|
restart: unless-stopped
|
|
networks:
|
|
- dbgptnet
|
|
ipc: host
|
|
volumes:
|
|
dbgpt-init-scripts:
|
|
dbgpt-myql-db:
|
|
dbgpt-data:
|
|
dbgpt-message:
|
|
networks:
|
|
dbgptnet:
|
|
driver: bridge
|
|
name: dbgptnet |