docker部署
1.环境准备 🌍
对于服务器硬件、软件、操作系统、以及所依赖组件请参考此文档
2. 部署 OpenIMServer
2.1 仓库克隆 🗂️
建议使用 GitHub Releases 页面绿色 Latest 对应的最新正式发布 tag,不要直接按 tag 名字排序,也不要使用 alpha/rc 等预发布版本。
git clone https://github.com/openimsdk/openim-docker && cd openim-docker
git fetch --tags
LATEST_STABLE_TAG=$(basename "$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/openimsdk/openim-docker/releases/latest)")
git checkout "$LATEST_STABLE_TAG"
echo "using openim-docker stable release tag: $LATEST_STABLE_TAG"
这里的 latest 指 GitHub Releases 页面绿色 Latest 的正式发布版,不包含 alpha/beta/rc 等预发布版本。
main为开发版分支,生产环境不要直接使用main。
2.2 配置修改 🔧
-
修改
.env文件,配置 MinIO 外网 IP,以支持发送图片和文件,其中your-server-ip为服务端 外网 IP。MINIO_EXTERNAL_ADDRESS="http://your-server-ip:10005"
2.3服务启动 🚀
- 启动服务:
docker compose up -d
首次执行会拉取较大的镜像,耗时可能较长。启动完成后建议等待
30-60s,再执行健康检查或接口验证。
本文档默认在干净环境下启动。如果机器上已经存在同名容器(如
mongo、redis、kafka、etcd、minio、openim-server、openim-chat),docker compose up -d会因为container_name冲突而失败。此时应先停掉并删除同名容器,或改用已存在组件并调整配置。
如果启动时看到
ETCD_USERNAME、ETCD_PASSWORD、KAFKA_USERNAME、KAFKA_PASSWORD未设置的 warning,而你并未启用这些组件的鉴权,这类提示通常可以忽略。
- 停止服务:
docker compose down
- 查看日志:
docker logs -f openim-server
2.4 监控告警(可选)
如需同时启动 Prometheus、Alertmanager、Grafana、node-exporter,可执行:
docker compose --profile m up -d
默认端口以当前 .env 为准,常用值如下:
19090:Prometheus19093:Alertmanager13000:Grafana19100:node-exporter
3. 快速体验 ⚡
快速体验 OpenIMSDK 核心能力,并测试 OpenIMServer/ChatServer 部署是否正常,请参考快速验证。
补充(基于当前项目目录):如果你是按
open-im-server+chat两个源码仓库部署,open-im-server/docker-compose.yml主要用于依赖组件,ChatServer 仍需在chat目录执行mage start。可参考源码部署。
4. 常见问题
unhealthy定位
- 执行
docker exec -it openim-server mage check确认是否超过一分钟; - 执行 docker logs -f openim-server 查看日志;
- 如果
openim-chat在启动初期短暂报connect: connection refused,先等待30-60s后再复查健康状态;这通常是依赖openim-server尚未完全就绪导致的启动时序现象。
配置项修改
进入容器修改config目录下的修改配置文件无效! 必须采用环境变量的方式修改配置,参考设置环境变量指南。