Files
2026-09-19 16:35:35 +08:00

8.2 KiB
Raw Permalink Blame History

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 追踪后端二选一:zipkinBrave)或 otelcolOTLP),详见 可观测性文档
目标 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.ymlik-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/ 目录为基准解析;.envKINGBASE_LICENSE_FILEMRCP_*_DIR 等相对路径同样相对于 compose/ 目录。容器名、数据卷名、网络名保持不变,存量数据无缝延续。

更多说明

详细文档位于 readme/ 目录: