8.2 KiB
docker
每个镜像一个独立 compose 文件(一镜像一文件),统一存放在 compose/ 目录,通过 start.sh/stop.sh 的关键字参数自由组合启动,不再有 db/mq/scenario 等分层文件。根目录仅保留 readme 说明、启停脚本与 .env 配置。
快速开始
# 克隆项目
git clone https://github.com/Bytedesk/bytedesk.git
cd bytedesk/deploy/docker
# 配置环境变量(按需修改密码/密钥)
cp .env.example .env
# 默认启动全栈(mysql + artemis + redis + elasticsearch + bytedesk 应用)
./start.sh
# 访问 http://127.0.0.1:9003,默认账号 admin@email.com / admin
常用命令
# 默认全栈(等价 ./start.sh all)
./start.sh
./stop.sh # 停止
./stop.sh down # 删除容器(保留数据卷)
# 仅中间件(源码本地开发,不启动 bytedesk 应用镜像)
./start.sh middleware
./stop.sh middleware down
# 切换数据库 / 消息队列(四选一 db,二选一 mq)
./start.sh postgresql rabbitmq middleware
./start.sh oracle middleware
./start.sh kingbase all
# 呼叫中心(call = freeswitch + mrcp;仅支持 mysql/postgresql)
./start.sh call all
./start.sh call middleware
./stop.sh call middleware down
# WebRTC 音视频(webrtc = coturn + janus)
./start.sh call webrtc all
./start.sh call webrtc middleware minio searxng neo4j # 任意组合
./stop.sh call webrtc middleware minio searxng neo4j down
## 使用 postgresql
./start.sh postgresql call webrtc middleware minio searxng neo4j # 任意组合
./stop.sh postgresql call webrtc middleware minio searxng neo4j down
# 之后反复切库,几秒完成
./switch-db.sh mysql
./switch-db.sh postgresql
# 可选组件(任意组合)
./start.sh all minio searxng
./start.sh middleware obs # obs = prometheus + grafana + zipkin + otelcol
./stop.sh middleware obs
./start.sh middleware logstash kibana
./stop.sh middleware logstash kibana down
关键字速查
| 类别 | 关键字(别名) | 说明 |
|---|---|---|
| 数据库(四选一,默认 mysql) | mysql postgresql(pg) oracle kingbase(kingbase9) |
自动建库 |
| 消息队列(二选一,默认 artemis) | artemis rabbitmq |
|
| 核心中间件 | redis elasticsearch(es) |
任何栈自动包含 |
| 呼叫中心 | freeswitch mrcp,组合 call |
call 仅支持 mysql/postgresql |
| WebRTC | coturn janus,组合 webrtc |
|
| 搜索/存储 | searxng(search) minio neo4j |
企业版功能 |
| 日志 | logstash kibana |
依赖 elasticsearch |
| 可观测 | prometheus grafana zipkin otelcol(opentelemetry),组合 obs |
追踪后端二选一:zipkin(Brave)或 otelcol(OTLP),详见 可观测性文档 |
| 目标 | middleware / all(bytedesk),默认 all |
展开见下表 |
all / middleware 对应镜像
| 目标关键字 | 展开包含的镜像(compose 文件) | 说明 |
|---|---|---|
all(默认) |
middleware 全部 + bytedesk 应用(compose-redis + compose-elasticsearch + compose- + compose- + compose-bytedesk) |
全栈:中间件 + 应用镜像 |
middleware |
compose-redis + compose-elasticsearch + compose-<所选db> + compose-<所选mq> | 仅中间件,不含 bytedesk 应用,用于源码本地开发 |
说明:redis 与 elasticsearch 为核心中间件,任何栈都自动包含;<所选db> 默认 mysql(可选 postgresql/oracle/kingbase),<所选mq> 默认 artemis(可选 rabbitmq);其余组件(freeswitch、obs、minio 等)按关键字叠加。
停止动作:./stop.sh [stop|down] [关键字...],动作词可在任意位置,关键字与启动时一致;down 删除容器保留数据卷。
文件清单
所有 compose 文件及各组件配套配置(searxng/、grafana/、logstash/、prometheus.yml、ik-plugin-cache/)均位于 compose/ 目录:
| compose 文件(位于 compose/) | 镜像 | 默认端口 | 详细说明 |
|---|---|---|---|
| compose/compose-redis.yaml | redis | 16379 | — |
| compose/compose-elasticsearch.yaml | elasticsearch:9.4.2 | 19200/19300 | — |
| compose/compose-mysql.yaml | mysql | 13306 | 数据库 |
| compose/compose-postgresql.yaml | postgres:17 | 15432 | 数据库 |
| compose/compose-oracle.yaml | gvenzl/oracle-free:23-slim | 11521 | 数据库 |
| compose/compose-kingbase.yaml | kingbase V9 | 54321 | 数据库 |
| compose/compose-artemis.yaml | activemq-artemis:2.40.0 | 16161/18161 | 消息队列 |
| compose/compose-rabbitmq.yaml | rabbitmq:4.2.3 | 5673/15673 | 消息队列 |
| compose/compose-bytedesk.yaml | bytedesk 应用 | 9003/9885 | — |
| compose/compose-freeswitch.yaml | bytedesk/freeswitch | 15060/18021 | FreeSWITCH |
| compose/compose-mrcp.yaml | bytedesk/mrcp | 11544 | 呼叫中心 |
| compose/compose-coturn.yaml | coturn:4.6.3 | 13478 | WebRTC |
| compose/compose-janus.yaml | bytedesk/janus | 18089/18188 | WebRTC |
| compose/compose-searxng.yaml | searxng | 18888 | SearXNG |
| compose/compose-neo4j.yaml | neo4j:5.26.30 | 17474/17687 | Neo4j 知识图谱 |
| compose/compose-logstash.yaml | logstash:9.4.2 | 19600 | Logstash |
| compose/compose-kibana.yaml | kibana:9.4.2 | 15601 | Kibana |
| compose/compose-minio.yaml | minio | 19000/19001 | MinIO |
| compose/compose-prometheus.yaml | prometheus | 19090 | 可观测性 |
| compose/compose-grafana.yaml | grafana | 13000 | 可观测性 |
| compose/compose-zipkin.yaml | zipkin | 19411 | 可观测性 |
| compose/compose-otelcol.yaml | otel/opentelemetry-collector-contrib | 14317/14318 | 可观测性——OTLP 接收,trace 转发 Zipkin |
其他文件:start.sh/stop.sh(组合启停)、watchdog.sh(应用看门狗,详见 watchdog 使用说明)、.env(敏感配置)、one/(all-in-one 单文件部署)。
手动执行 docker compose
如需绕过脚本手动操作,在 deploy/docker 目录执行(--env-file .env 加载敏感配置):
docker compose --env-file .env -p bytedesk \
-f compose/compose-redis.yaml -f compose/compose-elasticsearch.yaml \
-f compose/compose-mysql.yaml -f compose/compose-artemis.yaml \
-f compose/compose-bytedesk.yaml up -d
说明:compose 文件内的相对路径(./searxng、../../freeswitch 等)均以 compose/ 目录为基准解析;.env 中 KINGBASE_LICENSE_FILE、MRCP_*_DIR 等相对路径同样相对于 compose/ 目录。容器名、数据卷名、网络名保持不变,存量数据无缝延续。
更多说明
详细文档位于 readme/ 目录: