docker部署
环境准备 🌍
- 在服务器上安装带有 Compose 插件的 Docker 或 docker-compose。安装详情请访问 Docker Compose 安装指南。
仓库克隆 🗂️
git clone https://github.com/openimsdk/openim-docker
配置修改 🔧
修改
.env
文件,配置外网 IP。如果使用域名,需配置 Nginx# 设置 MinIO 服务的外网访问地址(外网IP或域名)
MINIO_EXTERNAL_ADDRESS="http://external_ip:10005"
# 设置 Grafana 服务的外网访问地址(外网IP或域名)
GRAFANA_URL="http://external_ip:13000/"配置格式说明:
docker方式部署如果需要修改配置,则需要通过修改docker-compose.yaml中的环境变量来实现。例如修改
openim-server
的配置文件openim-api.yml
中的prometheus.grafanaURL
字段,则应在docker-compose.yaml
文件中的openim-server
的environment
下添加:- IMENV_OPENIM_API_PROMETHEUS_GRAFANAURL=${GRAFANA_URL}
。IMENV
为openim-server
配置的固定前缀,文件名和字段之间的分隔符全部为_
,并且全部改为大写。其他配置请参考 .env 中的注释
服务启动 🚀
- 启动服务:
docker compose up -d
- 停止服务:
docker compose down
- 查看日志:
docker logs -f openim-server
docker logs -f openim-chat
快速体验 ⚡
快速体验 OpenIM 服务,请参考快速验证。
以下是release-v3.6及之前的版本部署流程
🛠 docker部署
1. 环境及组件要求
对于服务器环境、系统、以及存储组件可以参考此文档
2. docker部署
2.1 克隆仓库并初始化
git clone https://github.com/openimsdk/openim-docker openim-docker && cd openim-docker && make init
💡 Tips
如果不是本机clone,而是通过下载压缩包获取的 openim-docker,执行命令 find ./ -name "*.sh" | xargs chmod +x,以赋予脚本执行权限
2.2 设置OPENIM_IP
🔔 必须要设置OPENIM_IP,且不能是127.0.0.1
# 如果服务器有外网IP
export OPENIM_IP="外网IP"
# 如果仅提供内网服务
export OPENIM_IP="内网IP"
2.3 启动服务及查看日志
docker compose up -d
docker ps
docker compose logs -f openim-chat
docker compose logs -f openim-server
3. 快速验证
请参考快速验证文档
4. 管理后台和监控系统
请参考 管理后台和监控系统 文档。
5. 关于配置项的修改
此项目配置项较为复杂,主要是某些配置项涉及到.env
、openim-chat/config/config.yaml
和 openim-server/config/config.yaml
多个文件,配置项的修改说明分为两个部分,分别是共用配置项的修改和其他配置项的修改。
5.1 共用配置项
.env
、openim-chat/config/config.yaml
和 openim-server/config/config.yaml
共用的配置项:
- mysql/mongo/redis/kafka/zookeeper/minio 端口及密码;
- SECRET;
- API_OPENIM_PORT;
- OPENIM_IP;
- MINIO_PORT;
- GRAFANA_PORT
5.2 修改方法
对于5.1共用配置项的修改,以下两种方式二选一。
方式一:所有配置重新生成
如果需要全面更新配置,可以采用以下步骤:
- 删除现有配置文件:删除
openim-server/config/config.yaml
和openim-chat/config/config.yaml
文件。 - 修改
.env
文件:更新.env
文件中的相关配置项。 - 重新生成配置并重启服务:执行
docker compose down ; docker compose up -d
,这将基于.env
文件中的新设置重新生成配置文件,并重启服务。
方式二:分别修改多个配置文件
如果只需部分更新配置,可以按照以下步骤操作:
修改
.env
文件:更新.env
文件中的相关配置项。手动更新配置文件:根据
.env
文件的修改,相应地更新openim-server/config/config.yaml
和openim-chat/config/config.yaml
文件中的配置项。特殊变量的额外处理:如果修改了
OPENIM_IP
、API_OPENIM_PORT
、MINIO_PORT
、GRAFANA_PORT
,则需要在openim-server/config/config.yaml
中更新以下配置项:object:
apiURL: "http://$OPENIM_IP:$API_OPENIM_PORT"
minio:
endpoint: "http://$DOCKER_BRIDGE_GATEWAY:$MINIO_PORT"
signEndpoint: "http://$OPENIM_IP:$MINIO_PORT"
grafanaUrl: http://$OPENIM_IP:$GRAFANA_PORT重启服务:执行
docker compose down ; docker compose up -d
以应用更改并重启服务。
5.3 其他配置项的修改
对于 .env
、openim-chat/config/config.yaml
和 openim-server/config/config.yaml
中的非共用变量,可以单独修改相应文件中的这些配置项。执行 docker compose down ; docker compose up -d
以应用更改并重启服务。
❓ 6. 常见问题
6.1 能正常发送文本消息,但发送图片失败 😕
可能是因为没有在执行 docker compose up -d
命令之前设置 OPENIM_IP
环境变量。可以通过查看启动时日志,或使用以下命令搜索日志中的 "127.0.0.1" 地址来确认:
grep "127.0.0.1" openim-server/_output/logs/openim-docker.log
解决方案:
设置
OPENIM_IP
环境变量为你的公网IP地址,如仅提供内网服务则为内网IP地址:export OPENIM_IP="<Public-IP>"
使用
sed
命令更新config.yaml
文件中的apiURL
和signEndpoint
配置项,将地址改为使用OPENIM_IP
环境变量指定的IP地址:sed -i -e "s/apiURL: \"http:\/\/127\.0\.0\.1/apiURL: \"http:\/\/${OPENIM_IP}/" \
-e "s/signEndpoint: \"http:\/\/127\.0\.0\.1/signEndpoint: \"http:\/\/${OPENIM_IP}/" \
openim-server/config/config.yaml
通过上述步骤修改配置并重启服务后,应能正常发送图片消息。
6.2 关于 Docker 版本 🐋
强烈要求使用 docker compose 命令而不是 docker-compose,老版本 Docker 可能不支持 gateway 功能❌。我们建议您升级到较新的版本,例如 23.0.1
🔝
6.3 日志查看 📜
日志位置:
- 运行时日志:
{openim-server, openim-chat}/_output/logs/openim-all.*
- 启动时日志:
{openim-server, openim-chat}/_output/logs/openim-docker.log