153 lines
8.2 KiB
Markdown
153 lines
8.2 KiB
Markdown
<!--
|
||
* @Author: jackning 270580156@qq.com
|
||
* @Description: bytedesk.com https://github.com/Bytedesk/bytedesk
|
||
* Copyright (c) 2024 by bytedesk.com, All Rights Reserved.
|
||
-->
|
||
# docker
|
||
|
||
每个镜像一个独立 compose 文件(一镜像一文件),统一存放在 [`compose/`](./compose/) 目录,通过 `start.sh`/`stop.sh` 的关键字参数自由组合启动,不再有 db/mq/scenario 等分层文件。根目录仅保留 readme 说明、启停脚本与 `.env` 配置。
|
||
|
||
## 快速开始
|
||
|
||
```bash
|
||
# 克隆项目
|
||
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
|
||
```
|
||
|
||
## 常用命令
|
||
|
||
```bash
|
||
# 默认全栈(等价 ./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),详见 [可观测性文档](./readme/readme.observability.md) |
|
||
| 目标 | `middleware` / `all`(bytedesk),默认 all | 展开见下表 |
|
||
|
||
### all / middleware 对应镜像
|
||
|
||
| 目标关键字 | 展开包含的镜像(compose 文件) | 说明 |
|
||
| --- | --- | --- |
|
||
| `all`(默认) | `middleware` 全部 + **bytedesk 应用**(compose-redis + compose-elasticsearch + compose-<db> + compose-<mq> + 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/compose-redis.yaml | redis | 16379 | — |
|
||
| compose/compose-elasticsearch.yaml | elasticsearch:9.4.2 | 19200/19300 | — |
|
||
| compose/compose-mysql.yaml | mysql | 13306 | [数据库](./readme/readme.database.md) |
|
||
| compose/compose-postgresql.yaml | postgres:17 | 15432 | [数据库](./readme/readme.database.md) |
|
||
| compose/compose-oracle.yaml | gvenzl/oracle-free:23-slim | 11521 | [数据库](./readme/readme.database.md) |
|
||
| compose/compose-kingbase.yaml | kingbase V9 | 54321 | [数据库](./readme/readme.database.md) |
|
||
| compose/compose-artemis.yaml | activemq-artemis:2.40.0 | 16161/18161 | [消息队列](./readme/readme.mq.md) |
|
||
| compose/compose-rabbitmq.yaml | rabbitmq:4.2.3 | 5673/15673 | [消息队列](./readme/readme.mq.md) |
|
||
| compose/compose-bytedesk.yaml | bytedesk 应用 | 9003/9885 | — |
|
||
| compose/compose-freeswitch.yaml | bytedesk/freeswitch | 15060/18021 | [FreeSWITCH](./readme/readme.freeswitch.md) |
|
||
| compose/compose-mrcp.yaml | bytedesk/mrcp | 11544 | [呼叫中心](./readme/readme.call.md) |
|
||
| compose/compose-coturn.yaml | coturn:4.6.3 | 13478 | [WebRTC](./readme/readme.webrtc.md) |
|
||
| compose/compose-janus.yaml | bytedesk/janus | 18089/18188 | [WebRTC](./readme/readme.webrtc.md) |
|
||
| compose/compose-searxng.yaml | searxng | 18888 | [SearXNG](./readme/readme.searxng.md) |
|
||
| compose/compose-neo4j.yaml | neo4j:5.26.30 | 17474/17687 | [Neo4j 知识图谱](./readme/readme.neo4j.md) |
|
||
| compose/compose-logstash.yaml | logstash:9.4.2 | 19600 | [Logstash](./readme/readme.logstash.md) |
|
||
| compose/compose-kibana.yaml | kibana:9.4.2 | 15601 | [Kibana](./readme/readme.kibana.md) |
|
||
| compose/compose-minio.yaml | minio | 19000/19001 | [MinIO](./readme/readme.minio.md) |
|
||
| compose/compose-prometheus.yaml | prometheus | 19090 | [可观测性](./readme/readme.observability.md) |
|
||
| compose/compose-grafana.yaml | grafana | 13000 | [可观测性](./readme/readme.observability.md) |
|
||
| compose/compose-zipkin.yaml | zipkin | 19411 | [可观测性](./readme/readme.observability.md) |
|
||
| compose/compose-otelcol.yaml | otel/opentelemetry-collector-contrib | 14317/14318 | [可观测性](./readme/readme.observability.md)——OTLP 接收,trace 转发 Zipkin |
|
||
|
||
其他文件:`start.sh`/`stop.sh`(组合启停)、`watchdog.sh`(应用看门狗,详见 [watchdog 使用说明](./readme/readme.watchdog.md))、`.env`(敏感配置)、`one/`(all-in-one 单文件部署)。
|
||
|
||
## 手动执行 docker compose
|
||
|
||
如需绕过脚本手动操作,在 `deploy/docker` 目录执行(`--env-file .env` 加载敏感配置):
|
||
|
||
```bash
|
||
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/](./readme/) 目录:
|
||
|
||
- [快速开始与常见问题](./readme/readme.quickstart.md)
|
||
- [数据库切换与自动建库](./readme/readme.database.md)
|
||
- [消息队列切换](./readme/readme.mq.md)
|
||
- [呼叫中心(FreeSWITCH + MRCP)](./readme/readme.call.md) / [FreeSWITCH 详细配置](./readme/readme.freeswitch.md)
|
||
- [WebRTC 音视频(coturn + janus)](./readme/readme.webrtc.md)
|
||
- [SearXNG 联网搜索](./readme/readme.searxng.md)(企业版)
|
||
- [Neo4j 知识图谱](./readme/readme.neo4j.md)(企业版)
|
||
- [Logstash 日志采集](./readme/readme.logstash.md) / [Kibana 日志查询](./readme/readme.kibana.md)
|
||
- [MinIO 对象存储](./readme/readme.minio.md)
|
||
- [可观测性(Prometheus + Grafana + Zipkin + OTel Collector)](./readme/readme.observability.md)
|
||
- [watchdog.sh 应用看门狗](./readme/readme.watchdog.md)
|
||
- [环境变量说明](./readme/readme.env.md)
|
||
- [旧版本迁移指南](./readme/readme.migration.md)
|