跳到主要内容

docker部署

环境准备 🌍

仓库克隆 🗂️

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-serverenvironment下添加:- IMENV_OPENIM_API_PROMETHEUS_GRAFANAURL=${GRAFANA_URL}IMENVopenim-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. 关于配置项的修改

此项目配置项较为复杂,主要是某些配置项涉及到.envopenim-chat/config/config.yamlopenim-server/config/config.yaml多个文件,配置项的修改说明分为两个部分,分别是共用配置项的修改和其他配置项的修改。

5.1 共用配置项

.envopenim-chat/config/config.yamlopenim-server/config/config.yaml 共用的配置项:

  1. mysql/mongo/redis/kafka/zookeeper/minio 端口及密码;
  2. SECRET;
  3. API_OPENIM_PORT;
  4. OPENIM_IP;
  5. MINIO_PORT;
  6. GRAFANA_PORT

5.2 修改方法

对于5.1共用配置项的修改,以下两种方式二选一。

方式一:所有配置重新生成

如果需要全面更新配置,可以采用以下步骤:

  1. 删除现有配置文件:删除 openim-server/config/config.yamlopenim-chat/config/config.yaml 文件。
  2. 修改 .env 文件:更新 .env 文件中的相关配置项。
  3. 重新生成配置并重启服务:执行 docker compose down ; docker compose up -d,这将基于 .env 文件中的新设置重新生成配置文件,并重启服务。

方式二:分别修改多个配置文件

如果只需部分更新配置,可以按照以下步骤操作:

  1. 修改 .env 文件:更新 .env 文件中的相关配置项。

  2. 手动更新配置文件:根据 .env 文件的修改,相应地更新 openim-server/config/config.yamlopenim-chat/config/config.yaml 文件中的配置项。

  3. 特殊变量的额外处理:如果修改了 OPENIM_IPAPI_OPENIM_PORTMINIO_PORTGRAFANA_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
  4. 重启服务:执行 docker compose down ; docker compose up -d 以应用更改并重启服务。

5.3 其他配置项的修改

对于 .envopenim-chat/config/config.yamlopenim-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

解决方案:

  1. 设置 OPENIM_IP 环境变量为你的公网IP地址,如仅提供内网服务则为内网IP地址:

    export OPENIM_IP="<Public-IP>"
  2. 使用 sed 命令更新 config.yaml 文件中的 apiURLsignEndpoint 配置项,将地址改为使用 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