mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-05 05:12:45 +08:00
🔥Super feat: OpenIM CTL optimization is supported (#926)
* feat: add more test code Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test code Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test code Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: init project Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: init project Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add versionchecker deploy Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: fix go work go version and build scripts Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: fix actions no pass Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add test file Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: fix chat bug Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test project Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test project Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test project Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: sava images file Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add test file Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: set more help and port set Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: update slack link Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: update slack link Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test project Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: update openim-web Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: set more help and port set Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: update openim-web Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: update openim-web Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add docker buildx images is openim-web Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add docker buildx images is openim-web Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more test Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: scripts fix Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: scripts fix Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: scripts fix Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: set config file path Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: set config file path Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: set config file path Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: docker compose Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: kafka environment port Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: kafka environment port Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: kafka environment port Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: kafka environment port Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * docs: fix docs link error issus:#968 Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * docs: add deployment docs Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more helm chart Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: add more helm chart Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * feat: Optimize the functionality of iam Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: add iam super feat Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: add go format Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> * fix: add go format Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> --------- Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com>
This commit is contained in:
parent
db9dbd4385
commit
87766af02f
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
# Ignore specific files
|
# Ignore specific files
|
||||||
.dockerignore
|
.dockerignore
|
||||||
|
.git
|
||||||
|
|
||||||
# Ignore build artifacts
|
# Ignore build artifacts
|
||||||
_output/
|
_output/
|
||||||
|
276
.env
276
.env
@ -1,19 +1,265 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
# ======================================
|
||||||
#
|
# ========= Basic Configuration ========
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# ======================================
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
|
# The user for authentication or system operations.
|
||||||
|
# Default: USER=root
|
||||||
USER=root
|
USER=root
|
||||||
|
|
||||||
|
# Password associated with the specified user for authentication.
|
||||||
|
# Default: PASSWORD=openIM123
|
||||||
PASSWORD=openIM123
|
PASSWORD=openIM123
|
||||||
MINIO_ENDPOINT=http://127.0.0.1:10005
|
|
||||||
API_URL=http://127.0.0.1:10002
|
# Endpoint for the MinIO object storage service.
|
||||||
|
# Default: MINIO_ENDPOINT=http://172.28.0.1:10005
|
||||||
|
MINIO_ENDPOINT=http://172.28.0.1:10005
|
||||||
|
|
||||||
|
# Base URL for the application programming interface (API).
|
||||||
|
# Default: API_URL=http://172.28.0.1:10002
|
||||||
|
API_URL=http://172.28.0.1:10002
|
||||||
|
|
||||||
|
# Directory path for storing data files or related information.
|
||||||
|
# Default: DATA_DIR=./
|
||||||
DATA_DIR=./
|
DATA_DIR=./
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========= Network Configuration ======
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Subnet for the Docker network.
|
||||||
|
# Default: DOCKER_BRIDGE_SUBNET=172.28.0.0/16
|
||||||
|
DOCKER_BRIDGE_SUBNET=172.28.0.0/16
|
||||||
|
|
||||||
|
# Gateway for the Docker network.
|
||||||
|
# Default: DOCKER_BRIDGE_GATEWAY=172.28.0.1
|
||||||
|
DOCKER_BRIDGE_GATEWAY=172.28.0.1
|
||||||
|
|
||||||
|
# Address or hostname for the MySQL network.
|
||||||
|
# Default: MYSQL_NETWORK_ADDRESS=172.28.0.2
|
||||||
|
MYSQL_NETWORK_ADDRESS=172.28.0.2
|
||||||
|
|
||||||
|
# Address or hostname for the MongoDB network.
|
||||||
|
# Default: MONGO_NETWORK_ADDRESS=172.28.0.3
|
||||||
|
MONGO_NETWORK_ADDRESS=172.28.0.3
|
||||||
|
|
||||||
|
# Address or hostname for the Redis network.
|
||||||
|
# Default: REDIS_NETWORK_ADDRESS=172.28.0.4
|
||||||
|
REDIS_NETWORK_ADDRESS=172.28.0.4
|
||||||
|
|
||||||
|
# Address or hostname for the Kafka network.
|
||||||
|
# Default: KAFKA_NETWORK_ADDRESS=172.28.0.5
|
||||||
|
KAFKA_NETWORK_ADDRESS=172.28.0.5
|
||||||
|
|
||||||
|
# Address or hostname for the ZooKeeper network.
|
||||||
|
# Default: ZOOKEEPER_NETWORK_ADDRESS=172.28.0.6
|
||||||
|
ZOOKEEPER_NETWORK_ADDRESS=172.28.0.6
|
||||||
|
|
||||||
|
# Address or hostname for the MinIO network.
|
||||||
|
# Default: MINIO_NETWORK_ADDRESS=172.28.0.7
|
||||||
|
MINIO_NETWORK_ADDRESS=172.28.0.7
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM web network.
|
||||||
|
# Default: OPENIM_WEB_NETWORK_ADDRESS=172.28.0.8
|
||||||
|
OPENIM_WEB_NETWORK_ADDRESS=172.28.0.8
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM server network.
|
||||||
|
# Default: OPENIM_SERVER_NETWORK_ADDRESS=172.28.0.9
|
||||||
|
OPENIM_SERVER_NETWORK_ADDRESS=172.28.0.9
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM chat network.
|
||||||
|
# Default: OPENIM_CHAT_NETWORK_ADDRESS=172.28.0.10
|
||||||
|
OPENIM_CHAT_NETWORK_ADDRESS=172.28.0.10
|
||||||
|
|
||||||
|
# Address or hostname for the Prometheus network.
|
||||||
|
# Default: PROMETHEUS_NETWORK_ADDRESS=172.28.0.11
|
||||||
|
PROMETHEUS_NETWORK_ADDRESS=172.28.0.11
|
||||||
|
|
||||||
|
# Address or hostname for the Grafana network.
|
||||||
|
# Default: GRAFANA_NETWORK_ADDRESS=172.28.0.12
|
||||||
|
GRAFANA_NETWORK_ADDRESS=172.28.0.12
|
||||||
|
|
||||||
|
|
||||||
|
# ===============================================
|
||||||
|
# = Component Extension Configuration =
|
||||||
|
# ===============================================
|
||||||
|
|
||||||
|
# ============ Component Extension Configuration ==========
|
||||||
|
# ----- ZooKeeper Configuration -----
|
||||||
|
# Address or hostname for the ZooKeeper service.
|
||||||
|
# Default: ZOOKEEPER_ADDRESS=172.28.0.1
|
||||||
|
ZOOKEEPER_ADDRESS=172.28.0.6
|
||||||
|
|
||||||
|
# Port for ZooKeeper service.
|
||||||
|
# Default: ZOOKEEPER_PORT=12181
|
||||||
|
ZOOKEEPER_PORT=12181
|
||||||
|
|
||||||
|
# ----- MySQL Configuration -----
|
||||||
|
|
||||||
|
# Address or hostname for the MySQL service.
|
||||||
|
# Default: MYSQL_ADDRESS=172.28.0.1
|
||||||
|
MYSQL_ADDRESS=172.28.0.2
|
||||||
|
|
||||||
|
# Port on which MySQL database service is running.
|
||||||
|
# Default: MYSQL_PORT=13306
|
||||||
|
MYSQL_PORT=13306
|
||||||
|
|
||||||
|
# Password to authenticate with the MySQL database service.
|
||||||
|
# Default: MYSQL_PASSWORD=openIM123
|
||||||
|
MYSQL_PASSWORD=openIM123
|
||||||
|
|
||||||
|
# ----- MongoDB Configuration -----
|
||||||
|
# Address or hostname for the MongoDB service.
|
||||||
|
# Default: MONGO_ADDRESS=172.28.0.1
|
||||||
|
MONGO_ADDRESS=172.28.0.3
|
||||||
|
|
||||||
|
# Port on which MongoDB service is running.
|
||||||
|
# Default: MONGO_PORT=37017
|
||||||
|
MONGO_PORT=37017
|
||||||
|
|
||||||
|
# Username to authenticate with the MongoDB service.
|
||||||
|
# Default: MONGO_USERNAME=root
|
||||||
|
MONGO_USERNAME=root
|
||||||
|
|
||||||
|
# Password to authenticate with the MongoDB service.
|
||||||
|
# Default: MONGO_PASSWORD=openIM123
|
||||||
|
MONGO_PASSWORD=openIM123
|
||||||
|
|
||||||
|
# Name of the database in MongoDB to be used.
|
||||||
|
# Default: MONGO_DATABASE=openIM_v3
|
||||||
|
MONGO_DATABASE=openIM_v3
|
||||||
|
|
||||||
|
# ----- Redis Configuration -----
|
||||||
|
# Address or hostname for the Redis service.
|
||||||
|
# Default: REDIS_ADDRESS=172.28.0.1
|
||||||
|
REDIS_ADDRESS=172.28.0.4
|
||||||
|
|
||||||
|
# Port on which Redis in-memory data structure store is running.
|
||||||
|
# Default: REDIS_PORT=16379
|
||||||
|
REDIS_PORT=16379
|
||||||
|
|
||||||
|
# Password to authenticate with the Redis service.
|
||||||
|
# Default: REDIS_PASSWORD=openIM123
|
||||||
|
REDIS_PASSWORD=openIM123
|
||||||
|
|
||||||
|
# ----- Kafka Configuration -----
|
||||||
|
# Address or hostname for the Kafka service.
|
||||||
|
# Default: KAFKA_ADDRESS=172.28.0.1
|
||||||
|
KAFKA_ADDRESS=172.28.0.5
|
||||||
|
|
||||||
|
# Port on which Kafka distributed streaming platform is running.
|
||||||
|
# Default: KAFKA_PORT=19092
|
||||||
|
KAFKA_PORT=19094
|
||||||
|
|
||||||
|
# Topic in Kafka for storing the latest messages in Redis.
|
||||||
|
# Default: KAFKA_LATESTMSG_REDIS_TOPIC=latestMsgToRedis
|
||||||
|
KAFKA_LATESTMSG_REDIS_TOPIC=latestMsgToRedis
|
||||||
|
|
||||||
|
# Topic in Kafka for pushing messages (e.g. notifications or updates).
|
||||||
|
# Default: KAFKA_MSG_PUSH_TOPIC=msgToPush
|
||||||
|
KAFKA_MSG_PUSH_TOPIC=msgToPush
|
||||||
|
|
||||||
|
# Topic in Kafka for storing offline messages in MongoDB.
|
||||||
|
# Default: KAFKA_OFFLINEMSG_MONGO_TOPIC=offlineMsgToMongoMysql
|
||||||
|
KAFKA_OFFLINEMSG_MONGO_TOPIC=offlineMsgToMongoMysql
|
||||||
|
|
||||||
|
# ----- MinIO Configuration ----
|
||||||
|
# Address or hostname for the MinIO object storage service.
|
||||||
|
# Default: MINIO_ADDRESS=172.28.0.1
|
||||||
|
MINIO_ADDRESS=172.28.0.7
|
||||||
|
|
||||||
|
# Port on which MinIO object storage service is running.
|
||||||
|
# Default: MINIO_PORT=10005
|
||||||
|
MINIO_PORT=10005
|
||||||
|
|
||||||
|
# Access key to authenticate with the MinIO service.
|
||||||
|
# Default: MINIO_ACCESS_KEY=root
|
||||||
|
MINIO_ACCESS_KEY=root
|
||||||
|
|
||||||
|
# Secret key corresponding to the access key for MinIO authentication.
|
||||||
|
# Default: MINIO_SECRET_KEY=openIM123
|
||||||
|
MINIO_SECRET_KEY=openIM123
|
||||||
|
|
||||||
|
# ----- Prometheus Configuration -----
|
||||||
|
# Address or hostname for the Prometheus service.
|
||||||
|
# Default: PROMETHEUS_ADDRESS=172.28.0.1
|
||||||
|
PROMETHEUS_ADDRESS=172.28.0.11
|
||||||
|
|
||||||
|
# Port on which Prometheus service is running.
|
||||||
|
# Default: PROMETHEUS_PORT=19090
|
||||||
|
PROMETHEUS_PORT=19090
|
||||||
|
|
||||||
|
# ----- Grafana Configuration -----
|
||||||
|
# Address or hostname for the Grafana service.
|
||||||
|
# Default: GRAFANA_ADDRESS=172.28.0.1
|
||||||
|
GRAFANA_ADDRESS=172.28.0.12
|
||||||
|
|
||||||
|
# Port on which Grafana service is running.
|
||||||
|
# Default: GRAFANA_PORT=3000
|
||||||
|
GRAFANA_PORT=3000
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ============ OpenIM Web ===============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Path to the OpenIM web distribution.
|
||||||
|
# Default: OPENIM_WEB_DIST_PATH=/app/dist
|
||||||
|
OPENIM_WEB_DIST_PATH=/app/dist
|
||||||
|
|
||||||
|
# Port on which OpenIM web service is running.
|
||||||
|
# Default: OPENIM_WEB_PORT=11001
|
||||||
|
OPENIM_WEB_PORT=11001
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM web service.
|
||||||
|
# Default: OPENIM_WEB_ADDRESS=172.28.0.1
|
||||||
|
OPENIM_WEB_ADDRESS=172.28.0.8
|
||||||
|
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========= OpenIM Server ==============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM server.
|
||||||
|
# Default: OPENIM_SERVER_ADDRESS=172.28.0.1
|
||||||
|
OPENIM_SERVER_ADDRESS=172.28.0.9
|
||||||
|
|
||||||
|
# Port for the OpenIM WebSockets.
|
||||||
|
# Default: OPENIM_WS_PORT=10001
|
||||||
|
OPENIM_WS_PORT=10001
|
||||||
|
|
||||||
|
# Port for the OpenIM API.
|
||||||
|
# Default: API_OPENIM_PORT=10002
|
||||||
|
API_OPENIM_PORT=10002
|
||||||
|
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========== OpenIM Chat ===============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Branch name for OpenIM chat.
|
||||||
|
# Default: CHAT_BRANCH=main
|
||||||
|
CHAT_BRANCH=main
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM chat service.
|
||||||
|
# Default: OPENIM_CHAT_ADDRESS=172.28.0.1
|
||||||
|
OPENIM_CHAT_ADDRESS=172.28.0.10
|
||||||
|
|
||||||
|
# Port for the OpenIM chat API.
|
||||||
|
# Default: OPENIM_CHAT_API_PORT=10008
|
||||||
|
OPENIM_CHAT_API_PORT=10008
|
||||||
|
|
||||||
|
# Directory path for storing data files or related information for OpenIM chat.
|
||||||
|
# Default: OPENIM_CHAT_DATA_DIR=./openim-chat/main
|
||||||
|
OPENIM_CHAT_DATA_DIR=./openim-chat/main
|
||||||
|
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========== OpenIM Admin ==============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Branch name for OpenIM server.
|
||||||
|
# Default: SERVER_BRANCH=main
|
||||||
|
SERVER_BRANCH=main
|
||||||
|
|
||||||
|
# Port for the OpenIM admin API.
|
||||||
|
# Default: OPENIM_ADMIN_API_PORT=10009
|
||||||
|
OPENIM_ADMIN_API_PORT=10009
|
||||||
|
18
.github/sync-release.yml
vendored
18
.github/sync-release.yml
vendored
@ -1,3 +1,17 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
OpenIMSDK/openim-docker:
|
OpenIMSDK/openim-docker:
|
||||||
- source: ./config
|
- source: ./config
|
||||||
dest: ./openim-server/release/config
|
dest: ./openim-server/release/config
|
||||||
@ -10,7 +24,7 @@ OpenIMSDK/openim-docker:
|
|||||||
replace: true
|
replace: true
|
||||||
- source: ./scripts
|
- source: ./scripts
|
||||||
dest: ./scripts
|
dest: ./scripts
|
||||||
replace: true
|
replace: false
|
||||||
- source: ./Makefile
|
- source: ./Makefile
|
||||||
dest: ./Makefile
|
dest: ./Makefile
|
||||||
replace: true
|
replace: false
|
||||||
|
4
.github/workflows/auto-invite.yml
vendored
4
.github/workflows/auto-invite.yml
vendored
@ -34,11 +34,11 @@ jobs:
|
|||||||
body: |
|
body: |
|
||||||
We value close connections with our users, developers, and contributors here at Open-IM-Server. With a large community and maintainer team, we're always here to help and support you. Whether you're looking to join our community or have any questions or suggestions, we welcome you to get in touch with us.
|
We value close connections with our users, developers, and contributors here at Open-IM-Server. With a large community and maintainer team, we're always here to help and support you. Whether you're looking to join our community or have any questions or suggestions, we welcome you to get in touch with us.
|
||||||
|
|
||||||
Our most recommended way to get in touch is through [Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg). Even if you're in China, Slack is usually not blocked by firewalls, making it an easy way to connect with us. Our Slack community is the ideal place to discuss and share ideas and suggestions with other users and developers of Open-IM-Server. You can ask technical questions, seek help, or share your experiences with other users of Open-IM-Server.
|
Our most recommended way to get in touch is through [Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q). Even if you're in China, Slack is usually not blocked by firewalls, making it an easy way to connect with us. Our Slack community is the ideal place to discuss and share ideas and suggestions with other users and developers of Open-IM-Server. You can ask technical questions, seek help, or share your experiences with other users of Open-IM-Server.
|
||||||
|
|
||||||
In addition to Slack, we also offer the following ways to get in touch:
|
In addition to Slack, we also offer the following ways to get in touch:
|
||||||
|
|
||||||
+ <a href="https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg" target="_blank"><img src="https://img.shields.io/badge/Slack-OpenIM%2B-blueviolet?logo=slack&logoColor=white"></a> We also have Slack channels for you to communicate and discuss. To join, visit https://slack.com/ and join our [👀 Open-IM-Server slack](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) team channel.
|
+ <a href="https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q" target="_blank"><img src="https://img.shields.io/badge/Slack-OpenIM%2B-blueviolet?logo=slack&logoColor=white"></a> We also have Slack channels for you to communicate and discuss. To join, visit https://slack.com/ and join our [👀 Open-IM-Server slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) team channel.
|
||||||
+ <a href="https://mail.google.com/mail/u/0/?fs=1&tf=cm&to=winxu81@gmail.com" target="_blank"><img src="https://img.shields.io/badge/gmail-%40OOpenIMSDKCore?style=social&logo=gmail"></a> Get in touch with us on [Gmail](https://mail.google.com/mail/u/0/?fs=1&tf=cm&to=winxu81@gmail.com). If you have any questions or issues that need resolving, or any suggestions and feedback for our open source projects, please feel free to contact us via email.
|
+ <a href="https://mail.google.com/mail/u/0/?fs=1&tf=cm&to=winxu81@gmail.com" target="_blank"><img src="https://img.shields.io/badge/gmail-%40OOpenIMSDKCore?style=social&logo=gmail"></a> Get in touch with us on [Gmail](https://mail.google.com/mail/u/0/?fs=1&tf=cm&to=winxu81@gmail.com). If you have any questions or issues that need resolving, or any suggestions and feedback for our open source projects, please feel free to contact us via email.
|
||||||
+ <a href="https://doc.rentsoft.cn/" target="_blank"><img src="https://img.shields.io/badge/%E5%8D%9A%E5%AE%A2-%40OpenIMSDKCore-blue?style=social&logo=Octopus%20Deploy"></a> Read our [blog](https://doc.rentsoft.cn/). Our blog is a great place to stay up-to-date with Open-IM-Server projects and trends. On the blog, we share our latest developments, tech trends, and other interesting information.
|
+ <a href="https://doc.rentsoft.cn/" target="_blank"><img src="https://img.shields.io/badge/%E5%8D%9A%E5%AE%A2-%40OpenIMSDKCore-blue?style=social&logo=Octopus%20Deploy"></a> Read our [blog](https://doc.rentsoft.cn/). Our blog is a great place to stay up-to-date with Open-IM-Server projects and trends. On the blog, we share our latest developments, tech trends, and other interesting information.
|
||||||
+ <a href="https://github.com/OpenIMSDK/OpenIM-Docs/blob/main/docs/images/WechatIMG20.jpeg" target="_blank"><img src="https://img.shields.io/badge/%E5%BE%AE%E4%BF%A1-OpenIMSDKCore-brightgreen?logo=wechat&style=flat-square"></a> Add [Wechat](https://github.com/OpenIMSDK/OpenIM-Docs/blob/main/docs/images/WechatIMG20.jpeg) and indicate that you are a user or developer of Open-IM-Server. We will process your request as soon as possible.
|
+ <a href="https://github.com/OpenIMSDK/OpenIM-Docs/blob/main/docs/images/WechatIMG20.jpeg" target="_blank"><img src="https://img.shields.io/badge/%E5%BE%AE%E4%BF%A1-OpenIMSDKCore-brightgreen?logo=wechat&style=flat-square"></a> Add [Wechat](https://github.com/OpenIMSDK/OpenIM-Docs/blob/main/docs/images/WechatIMG20.jpeg) and indicate that you are a user or developer of Open-IM-Server. We will process your request as soon as possible.
|
||||||
|
3
.github/workflows/deploy.yml
vendored
3
.github/workflows/deploy.yml
vendored
@ -51,4 +51,5 @@ jobs:
|
|||||||
echo "OWNER: $OWNER"
|
echo "OWNER: $OWNER"
|
||||||
echo "REPO: $REPO"
|
echo "REPO: $REPO"
|
||||||
git clone -b develop https://github.com/${OWNER}/${REPO}.git; cd ${REPO}
|
git clone -b develop https://github.com/${OWNER}/${REPO}.git; cd ${REPO}
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
continue-on-error: true
|
65
.github/workflows/docker-buildx.yml
vendored
65
.github/workflows/docker-buildx.yml
vendored
@ -317,4 +317,69 @@ jobs:
|
|||||||
tags: ${{ steps.meta13.outputs.tags }}
|
tags: ${{ steps.meta13.outputs.tags }}
|
||||||
labels: ${{ steps.meta13.outputs.labels }}
|
labels: ${{ steps.meta13.outputs.labels }}
|
||||||
cache-from: type=local,src=/tmp/.buildx-cache
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||||
|
|
||||||
|
build-tools-ghcr:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
with:
|
||||||
|
install: true
|
||||||
|
|
||||||
|
- name: Cache Docker layers
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: /tmp/.buildx-cache
|
||||||
|
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-buildx-
|
||||||
|
|
||||||
|
- name: Log in to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Extract metadata (tags, labels) for Docker openim-web
|
||||||
|
id: meta1
|
||||||
|
uses: docker/metadata-action@v4.6.0
|
||||||
|
with:
|
||||||
|
images: ghcr.io/openimsdk/openim-web
|
||||||
|
|
||||||
|
- name: Build and push Docker image for openim-web
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./build/images/openim-tools/openim-web/Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
tags: ${{ steps.meta1.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta1.outputs.labels }}
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||||
|
|
||||||
|
- name: Extract metadata (tags, labels) for Docker openim-web
|
||||||
|
id: meta2
|
||||||
|
uses: docker/metadata-action@v4.6.0
|
||||||
|
with:
|
||||||
|
images: ghcr.io/openimsdk/component
|
||||||
|
|
||||||
|
- name: Build and push Docker image for component
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./build/images/openim-tools/component/Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
tags: ${{ steps.meta2.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta2.outputs.labels }}
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
cache-to: type=local,dest=/tmp/.buildx-cache
|
cache-to: type=local,dest=/tmp/.buildx-cache
|
20
.github/workflows/greetings.yml
vendored
20
.github/workflows/greetings.yml
vendored
@ -28,13 +28,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/first-interaction@v1.1.1
|
- uses: actions/first-interaction@v1.1.1
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.REDBOT_GITHUB_TOKEN }}
|
repo-token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
||||||
issue-message: |
|
|
||||||
Hello! Thank you for filing an issue.
|
|
||||||
|
|
||||||
If this is a bug report, please include relevant logs to help us debug the problem.
|
|
||||||
|
|
||||||
[Join slack 🤖](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) to connect and communicate with our developers.
|
|
||||||
pr-message: |
|
pr-message: |
|
||||||
Hello! Thank you for your contribution.
|
Hello! Thank you for your contribution.
|
||||||
|
|
||||||
@ -42,4 +36,14 @@ jobs:
|
|||||||
|
|
||||||
If you are implementing a feature request, please check with the maintainers that the feature will be accepted first.
|
If you are implementing a feature request, please check with the maintainers that the feature will be accepted first.
|
||||||
|
|
||||||
[Join slack 🤖](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) to connect and communicate with our developers.
|
[Join slack 🤖](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) to connect and communicate with our developers.
|
||||||
|
|
||||||
|
Please leave your information in the [✨ discussions](https://github.com/orgs/OpenIMSDK/discussions/426), we expect anyone to join OpenIM developer community.
|
||||||
|
|
||||||
|
issue-message: |
|
||||||
|
Hello! Thank you for filing an issue.
|
||||||
|
|
||||||
|
If this is a bug report, please include relevant logs to help us debug the problem.
|
||||||
|
|
||||||
|
[Join slack 🤖](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) to connect and communicate with our developers.
|
||||||
|
continue-on-error: true
|
4
.github/workflows/help-comment-issue.yml
vendored
4
.github/workflows/help-comment-issue.yml
vendored
@ -31,5 +31,5 @@ jobs:
|
|||||||
token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
||||||
body: |
|
body: |
|
||||||
This issue is available for anyone to work on. **Make sure to reference this issue in your pull request.** :sparkles: Thank you for your contribution! :sparkles:
|
This issue is available for anyone to work on. **Make sure to reference this issue in your pull request.** :sparkles: Thank you for your contribution! :sparkles:
|
||||||
[Join slack 🤖](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) to connect and communicate with our developers.
|
[Join slack 🤖](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) to connect and communicate with our developers.
|
||||||
If you wish to accept this assignment, please leave a comment in the comments section: `/accept`.🎯
|
If you wish to accept this assignment, please leave a comment in the comments section: `/accept`.🎯
|
||||||
|
2
.github/workflows/project-progress.yml
vendored
2
.github/workflows/project-progress.yml
vendored
@ -31,6 +31,6 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: alex-page/github-project-automation-plus@v0.8.3
|
- uses: alex-page/github-project-automation-plus@v0.8.3
|
||||||
with:
|
with:
|
||||||
project: OpenIM-V3.1
|
project: openim-powerful
|
||||||
column: In Progress
|
column: In Progress
|
||||||
repo-token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
repo-token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
4
.github/workflows/scripts-verify.yml
vendored
4
.github/workflows/scripts-verify.yml
vendored
@ -68,7 +68,9 @@ jobs:
|
|||||||
- name: verify format
|
- name: verify format
|
||||||
run: |
|
run: |
|
||||||
sudo make format
|
sudo make format
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
- name: verify license
|
- name: verify license
|
||||||
run: |
|
run: |
|
||||||
sudo make verify-copyright
|
sudo make verify-copyright
|
||||||
|
continue-on-error: true
|
4
.github/workflows/sync.yml
vendored
4
.github/workflows/sync.yml
vendored
@ -6,10 +6,6 @@
|
|||||||
name: Synchronize kubecub public code to other repositories
|
name: Synchronize kubecub public code to other repositories
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
paths:
|
|
||||||
- scripts/*
|
|
||||||
- docs/*
|
|
||||||
- config/*
|
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
@ -72,7 +72,7 @@ For any substantial design, there should be a well-crafted design document. This
|
|||||||
|
|
||||||
Anybody can access the shared Drive for reading. To get access to comment. Once you've done that, head to the [shared Drive](https://drive.google.com/) and behold all the docs.
|
Anybody can access the shared Drive for reading. To get access to comment. Once you've done that, head to the [shared Drive](https://drive.google.com/) and behold all the docs.
|
||||||
|
|
||||||
In addition to that, we'd love to invite you to [join our Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) where you can play with your imagination, tell us what you're working on, and get a quick response.
|
In addition to that, we'd love to invite you to [join our Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) where you can play with your imagination, tell us what you're working on, and get a quick response.
|
||||||
|
|
||||||
When documenting a new design, we recommend a 2-step approach:
|
When documenting a new design, we recommend a 2-step approach:
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ When documenting a new design, we recommend a 2-step approach:
|
|||||||
|
|
||||||
In order to contribute a feature to Open-IM-Server you'll need to go through the following steps:
|
In order to contribute a feature to Open-IM-Server you'll need to go through the following steps:
|
||||||
|
|
||||||
+ Discuss your idea with the appropriate [working groups](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) on the working group's Slack channel.
|
+ Discuss your idea with the appropriate [working groups](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) on the working group's Slack channel.
|
||||||
+ Once there is general agreement that the feature is useful, create a GitHub issue to track the discussion. The issue should include information about the requirements and use cases that it is trying to address.
|
+ Once there is general agreement that the feature is useful, create a GitHub issue to track the discussion. The issue should include information about the requirements and use cases that it is trying to address.
|
||||||
+ Include a discussion of the proposed design and technical details of the implementation in the issue.
|
+ Include a discussion of the proposed design and technical details of the implementation in the issue.
|
||||||
|
|
||||||
@ -364,11 +364,11 @@ Such a commit can get produced as follows:
|
|||||||
|
|
||||||
We value close connections with our users, developers, and contributors here at Open-IM-Server. With a large community and maintainer team, we're always here to help and support you. Whether you're looking to join our community or have any questions or suggestions, we welcome you to get in touch with us.
|
We value close connections with our users, developers, and contributors here at Open-IM-Server. With a large community and maintainer team, we're always here to help and support you. Whether you're looking to join our community or have any questions or suggestions, we welcome you to get in touch with us.
|
||||||
|
|
||||||
Our most recommended way to get in touch is through [Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg). Even if you're in China, Slack is usually not blocked by firewalls, making it an easy way to connect with us. Our Slack community is the ideal place to discuss and share ideas and suggestions with other users and developers of Open-IM-Server. You can ask technical questions, seek help, or share your experiences with other users of Open-IM-Server.
|
Our most recommended way to get in touch is through [Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q). Even if you're in China, Slack is usually not blocked by firewalls, making it an easy way to connect with us. Our Slack community is the ideal place to discuss and share ideas and suggestions with other users and developers of Open-IM-Server. You can ask technical questions, seek help, or share your experiences with other users of Open-IM-Server.
|
||||||
|
|
||||||
In addition to Slack, we also offer the following ways to get in touch:
|
In addition to Slack, we also offer the following ways to get in touch:
|
||||||
|
|
||||||
+ <a href="https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg" target="_blank"><img src="https://img.shields.io/badge/slack-%40OpenIMSDKCore-informational?logo=slack&style=flat-square"></a>: We also have Slack channels for you to communicate and discuss. To join, visit https://slack.com/ and join our [👀 Open-IM-Server slack](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) team channel.
|
+ <a href="https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q" target="_blank"><img src="https://img.shields.io/badge/slack-%40OpenIMSDKCore-informational?logo=slack&style=flat-square"></a>: We also have Slack channels for you to communicate and discuss. To join, visit https://slack.com/ and join our [👀 Open-IM-Server slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) team channel.
|
||||||
+ <a href="https://mail.google.com/mail/u/0/?fs=1&tf=cm&to=4closetool3@gmail.com" target="_blank"><img src="https://img.shields.io/badge/gmail-%40OOpenIMSDKCore?style=social&logo=gmail"></a>: Get in touch with us on [Gmail](winxu81@gmail.com). If you have any questions or issues that need resolving, or any suggestions and feedback for our open source projects, please feel free to contact us via email.
|
+ <a href="https://mail.google.com/mail/u/0/?fs=1&tf=cm&to=4closetool3@gmail.com" target="_blank"><img src="https://img.shields.io/badge/gmail-%40OOpenIMSDKCore?style=social&logo=gmail"></a>: Get in touch with us on [Gmail](winxu81@gmail.com). If you have any questions or issues that need resolving, or any suggestions and feedback for our open source projects, please feel free to contact us via email.
|
||||||
+ <a href="https://doc.rentsoft.cn/" target="_blank"><img src="https://img.shields.io/badge/%E5%8D%9A%E5%AE%A2-%40OpenIMSDKCore-blue?style=social&logo=Octopus%20Deploy"></a>: Read our [blog](https://doc.rentsoft.cn/). Our blog is a great place to stay up-to-date with Open-IM-Server projects and trends. On the blog, we share our latest developments, tech trends, and other interesting information.
|
+ <a href="https://doc.rentsoft.cn/" target="_blank"><img src="https://img.shields.io/badge/%E5%8D%9A%E5%AE%A2-%40OpenIMSDKCore-blue?style=social&logo=Octopus%20Deploy"></a>: Read our [blog](https://doc.rentsoft.cn/). Our blog is a great place to stay up-to-date with Open-IM-Server projects and trends. On the blog, we share our latest developments, tech trends, and other interesting information.
|
||||||
+ <a href="https://github.com/OpenIMSDK/OpenIM-Docs/blob/main/docs/images/WechatIMG20.jpeg" target="_blank"><img src="https://img.shields.io/badge/%E5%BE%AE%E4%BF%A1-OpenIMSDKCore-brightgreen?logo=wechat&style=flat-square"></a>: Add [Wechat](https://github.com/OpenIMSDK/OpenIM-Docs/blob/main/docs/images/WechatIMG20.jpeg) and indicate that you are a user or developer of Open-IM-Server. We will process your request as soon as possible.
|
+ <a href="https://github.com/OpenIMSDK/OpenIM-Docs/blob/main/docs/images/WechatIMG20.jpeg" target="_blank"><img src="https://img.shields.io/badge/%E5%BE%AE%E4%BF%A1-OpenIMSDKCore-brightgreen?logo=wechat&style=flat-square"></a>: Add [Wechat](https://github.com/OpenIMSDK/OpenIM-Docs/blob/main/docs/images/WechatIMG20.jpeg) and indicate that you are a user or developer of Open-IM-Server. We will process your request as soon as possible.
|
||||||
|
@ -10,8 +10,8 @@ ENV GOPROXY=$GOPROXY
|
|||||||
# Set up the working directory
|
# Set up the working directory
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
COPY go.mod go.sum go.work ./
|
COPY go.mod go.sum ./
|
||||||
#RUN go mod download
|
RUN go mod download
|
||||||
|
|
||||||
# Copy all files to the container
|
# Copy all files to the container
|
||||||
ADD . .
|
ADD . .
|
||||||
|
15
Makefile
15
Makefile
@ -58,6 +58,16 @@ export USAGE_OPTIONS
|
|||||||
init:
|
init:
|
||||||
@$(MAKE) gen.init
|
@$(MAKE) gen.init
|
||||||
|
|
||||||
|
## init-githooks: Initialize git hooks ✨
|
||||||
|
.PHONY: init-githooks
|
||||||
|
init-githooks:
|
||||||
|
@$(MAKE) gen.init-githooks
|
||||||
|
|
||||||
|
## gen: Generate all necessary files. ✨
|
||||||
|
.PHONY: gen
|
||||||
|
gen:
|
||||||
|
@$(MAKE) gen.run
|
||||||
|
|
||||||
## demo: Run demo get started with Makefiles quickly ✨
|
## demo: Run demo get started with Makefiles quickly ✨
|
||||||
.PHONY: demo
|
.PHONY: demo
|
||||||
demo:
|
demo:
|
||||||
@ -190,11 +200,6 @@ push.multiarch:
|
|||||||
tools:
|
tools:
|
||||||
@$(MAKE) tools.install
|
@$(MAKE) tools.install
|
||||||
|
|
||||||
## gen: Generate all necessary files. ✨
|
|
||||||
.PHONY: gen
|
|
||||||
gen:
|
|
||||||
@$(MAKE) gen.run
|
|
||||||
|
|
||||||
## swagger: Generate swagger document. ✨
|
## swagger: Generate swagger document. ✨
|
||||||
.PHONY: swagger
|
.PHONY: swagger
|
||||||
swagger:
|
swagger:
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<a href="https://goreportcard.com/report/github.com/OpenIMSDK/Open-IM-Server"><img src="https://goreportcard.com/badge/github.com/OpenIMSDK/Open-IM-Server" alt="A+"></a>
|
<a href="https://goreportcard.com/report/github.com/OpenIMSDK/Open-IM-Server"><img src="https://goreportcard.com/badge/github.com/OpenIMSDK/Open-IM-Server" alt="A+"></a>
|
||||||
<a href="https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22good+first+issue%22"><img src="https://img.shields.io/github/issues/OpenIMSDK/Open-IM-Server/good%20first%20issue?logo=%22github%22" alt="good first"></a>
|
<a href="https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22good+first+issue%22"><img src="https://img.shields.io/github/issues/OpenIMSDK/Open-IM-Server/good%20first%20issue?logo=%22github%22" alt="good first"></a>
|
||||||
<a href="https://github.com/OpenIMSDK/Open-IM-Server"><img src="https://img.shields.io/github/stars/OpenIMSDK/Open-IM-Server.svg?style=flat&logo=github&colorB=deeppink&label=stars"></a>
|
<a href="https://github.com/OpenIMSDK/Open-IM-Server"><img src="https://img.shields.io/github/stars/OpenIMSDK/Open-IM-Server.svg?style=flat&logo=github&colorB=deeppink&label=stars"></a>
|
||||||
<a href="https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg"><img src="https://img.shields.io/badge/Slack-300%2B-blueviolet?logo=slack&logoColor=white"></a>
|
<a href="https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q"><img src="https://img.shields.io/badge/Slack-300%2B-blueviolet?logo=slack&logoColor=white"></a>
|
||||||
<a href="https://github.com/OpenIMSDK/Open-IM-Server/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green"></a>
|
<a href="https://github.com/OpenIMSDK/Open-IM-Server/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green"></a>
|
||||||
<a href="https://golang.org/"><img src="https://img.shields.io/badge/Language-Go-blue.svg"></a>
|
<a href="https://golang.org/"><img src="https://img.shields.io/badge/Language-Go-blue.svg"></a>
|
||||||
</p>
|
</p>
|
||||||
@ -316,7 +316,7 @@ OpenIM 我们的目标是建立一个顶级的开源社区。我们有一套标
|
|||||||
|
|
||||||
如果您想为这个 Open-IM-Server 仓库做贡献,请阅读我们的 [贡献者文档](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/CONTRIBUTING.md)。
|
如果您想为这个 Open-IM-Server 仓库做贡献,请阅读我们的 [贡献者文档](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/CONTRIBUTING.md)。
|
||||||
|
|
||||||
在您开始之前,请确保您的更改是需要的。最好的方法是创建一个 [新的讨论](https://github.com/OpenIMSDK/Open-IM-Server/discussions/new/choose) 或 [Slack 通讯](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg),或者如果您发现一个问题,首先 [报告它](https://github.com/OpenIMSDK/Open-IM-Server/issues/new/choose)。
|
在您开始之前,请确保您的更改是需要的。最好的方法是创建一个 [新的讨论](https://github.com/OpenIMSDK/Open-IM-Server/discussions/new/choose) 或 [Slack 通讯](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q),或者如果您发现一个问题,首先 [报告它](https://github.com/OpenIMSDK/Open-IM-Server/issues/new/choose)。
|
||||||
|
|
||||||
- [代码标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/go_code.md)
|
- [代码标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/go_code.md)
|
||||||
- [Docker 图像标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/images.md)
|
- [Docker 图像标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/images.md)
|
||||||
@ -324,21 +324,21 @@ OpenIM 我们的目标是建立一个顶级的开源社区。我们有一套标
|
|||||||
- [提交标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/commit.md)
|
- [提交标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/commit.md)
|
||||||
- [版本控制标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/version.md)
|
- [版本控制标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/version.md)
|
||||||
- [接口标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/api.md)
|
- [接口标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/api.md)
|
||||||
- [日志标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/log.md)
|
- [日志标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/)
|
||||||
- [错误代码标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/error_code.md)
|
- [错误代码标准](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/error_code.md)
|
||||||
|
|
||||||
## :busts_in_silhouette: 社区
|
## :busts_in_silhouette: 社区
|
||||||
|
|
||||||
- 📚 [OpenIM 社区](https://github.com/OpenIMSDK/community)
|
- 📚 [OpenIM 社区](https://github.com/OpenIMSDK/community)
|
||||||
- 💕 [OpenIM 兴趣小组](https://github.com/Openim-sigs)
|
- 💕 [OpenIM 兴趣小组](https://github.com/Openim-sigs)
|
||||||
- 🚀 [加入我们的 Slack 社区](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg)
|
- 🚀 [加入我们的 Slack 社区](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)
|
||||||
- :eyes: [加入我们的微信群 (微信群)](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
|
- :eyes: [加入我们的微信群 (微信群)](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
|
||||||
|
|
||||||
## :calendar: 社区会议
|
## :calendar: 社区会议
|
||||||
|
|
||||||
我们希望任何人都可以参与我们的社区并贡献代码,我们提供礼物和奖励,欢迎您每周四晚上加入我们。
|
我们希望任何人都可以参与我们的社区并贡献代码,我们提供礼物和奖励,欢迎您每周四晚上加入我们。
|
||||||
|
|
||||||
我们的会议在 [OpenIM Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) 🎯,然后您可以搜索 Open-IM-Server 管道加入。
|
我们的会议在 [OpenIM Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) 🎯,然后您可以搜索 Open-IM-Server 管道加入。
|
||||||
|
|
||||||
我们在 [GitHub 讨论](https://github.com/OpenIMSDK/Open-IM-Server/discussions/categories/meeting) 中记下每次 [双周会议](https://github.com/orgs/OpenIMSDK/discussions/categories/meeting) 的笔记,我们的历史会议记录以及会议回放都可在 [Google Docs :bookmark_tabs:](https://docs.google.com/document/d/1nx8MDpuG74NASx081JcCpxPgDITNTpIIos0DS6Vr9GU/edit?usp=sharing) 中找到。
|
我们在 [GitHub 讨论](https://github.com/OpenIMSDK/Open-IM-Server/discussions/categories/meeting) 中记下每次 [双周会议](https://github.com/orgs/OpenIMSDK/discussions/categories/meeting) 的笔记,我们的历史会议记录以及会议回放都可在 [Google Docs :bookmark_tabs:](https://docs.google.com/document/d/1nx8MDpuG74NASx081JcCpxPgDITNTpIIos0DS6Vr9GU/edit?usp=sharing) 中找到。
|
||||||
|
|
||||||
|
70
README.md
70
README.md
@ -13,7 +13,7 @@
|
|||||||
<a href="https://goreportcard.com/report/github.com/OpenIMSDK/Open-IM-Server"><img src="https://goreportcard.com/badge/github.com/OpenIMSDK/Open-IM-Server" alt="A+"></a>
|
<a href="https://goreportcard.com/report/github.com/OpenIMSDK/Open-IM-Server"><img src="https://goreportcard.com/badge/github.com/OpenIMSDK/Open-IM-Server" alt="A+"></a>
|
||||||
<a href="https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22good+first+issue%22"><img src="https://img.shields.io/github/issues/OpenIMSDK/Open-IM-Server/good%20first%20issue?logo=%22github%22" alt="good first"></a>
|
<a href="https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22good+first+issue%22"><img src="https://img.shields.io/github/issues/OpenIMSDK/Open-IM-Server/good%20first%20issue?logo=%22github%22" alt="good first"></a>
|
||||||
<a href="https://github.com/OpenIMSDK/Open-IM-Server"><img src="https://img.shields.io/github/stars/OpenIMSDK/Open-IM-Server.svg?style=flat&logo=github&colorB=deeppink&label=stars"></a>
|
<a href="https://github.com/OpenIMSDK/Open-IM-Server"><img src="https://img.shields.io/github/stars/OpenIMSDK/Open-IM-Server.svg?style=flat&logo=github&colorB=deeppink&label=stars"></a>
|
||||||
<a href="https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg"><img src="https://img.shields.io/badge/Slack-300%2B-blueviolet?logo=slack&logoColor=white"></a>
|
<a href="https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q"><img src="https://img.shields.io/badge/Slack-300%2B-blueviolet?logo=slack&logoColor=white"></a>
|
||||||
<a href="https://github.com/OpenIMSDK/Open-IM-Server/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green"></a>
|
<a href="https://github.com/OpenIMSDK/Open-IM-Server/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green"></a>
|
||||||
<a href="https://golang.org/"><img src="https://img.shields.io/badge/Language-Go-blue.svg"></a>
|
<a href="https://golang.org/"><img src="https://img.shields.io/badge/Language-Go-blue.svg"></a>
|
||||||
</p>
|
</p>
|
||||||
@ -128,9 +128,7 @@ $ make demo
|
|||||||
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# choose what you need, We take branch 3.2 as an example
|
git clone -b feat/test https://github.com/openim-sigs/openim-docker openim/openim-docker && export openim=$(pwd)/openim && cd $openim/openim-docker && ./scripts/init-config.sh && docker-compose up -d
|
||||||
$ BRANCH=release-v3.2
|
|
||||||
$ git clone -b $BRANCH https://github.com/OpenIMSDK/Open-IM-Server openim/openim-server && export openim_dir=$(pwd)/openim && cd ${openim_dir}/openim-server
|
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
@ -144,42 +142,36 @@ If you tried to get started quickly with `make demo`, then you know that our con
|
|||||||
|
|
||||||
You can use `make init` to quickly initialize a configuration file
|
You can use `make init` to quickly initialize a configuration file
|
||||||
|
|
||||||
|
Modify the automation script:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat scripts/install/environment.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Recommended using environment variables:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export PASSWORD="openIM123" # Set password
|
||||||
|
export USER="root" # Set username
|
||||||
|
# Choose chat version and server version https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/images.md, eg: main, release-v*.*
|
||||||
|
export CHAT_BRANCH="main"
|
||||||
|
export SERVER_BRANCH="main"
|
||||||
|
#... Other environment variables
|
||||||
|
# MONGO_USERNAME: This sets the MongoDB username
|
||||||
|
# MONGO_PASSWORD: Set the MongoDB password
|
||||||
|
# MONGO_DATABASE: Sets the MongoDB database name
|
||||||
|
# MINIO_ENDPOINT: set the MinIO service address
|
||||||
|
# API_URL: under network environment, set OpenIM Server API address
|
||||||
|
export API_URL="http://127.0.0.1:10002"
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, update the configuration using make init:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ make init
|
$ make init
|
||||||
$ git diff
|
$ git diff
|
||||||
```
|
```
|
||||||
|
|
||||||
Then feel free to modify your current config file, you can also modify `/scripts/install/environment.sh` document template, `make init` is essentially rendering `environment.sh` template, and then through the `make init` to automatically generate a new configuration.
|
|
||||||
|
|
||||||
If you only need to change the config file for a short time, or if you don't want to make any major changes in the future, you can modify the `.env file directly
|
|
||||||
|
|
||||||
```bash
|
|
||||||
USER=root #no need to modify
|
|
||||||
PASSWORD=openIM123 #A combination of 8 or more numbers and letters, this password applies to redis, mysql, mongo, as well as accessSecret in config/config.yaml
|
|
||||||
ENDPOINT=http://127.0.0.1:10005 #minio's external service IP and port, or use the domain name storage.xx.xx, the app must be able to access this IP and port or domain,
|
|
||||||
API_URL=http://127.0.0.1:10002/object/ #the app must be able to access this IP and port or domain,
|
|
||||||
DATA_DIR=./ #designate large disk directory
|
|
||||||
```
|
|
||||||
|
|
||||||
**3. Deploy and start**
|
|
||||||
|
|
||||||
> **Note**
|
|
||||||
>
|
|
||||||
> You can deploy either directly with `make install` or with `docker compose up`, the logic is the same
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ make install
|
|
||||||
# OR
|
|
||||||
$ docker-compose up
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Check the service
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ make check
|
|
||||||
```
|
|
||||||
|
|
||||||
Looking at the command line at this point, there are two items in the output, checking for the start of the component port that OpenIM depends on, and the start of the OpenIM core component
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
@ -349,7 +341,7 @@ OpenIM Our goal is to build a top-level open source community. We have a set of
|
|||||||
|
|
||||||
If you'd like to contribute to this Open-IM-Server repository, please read our [contributor documentation](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/CONTRIBUTING.md).
|
If you'd like to contribute to this Open-IM-Server repository, please read our [contributor documentation](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/CONTRIBUTING.md).
|
||||||
|
|
||||||
Before you start, please make sure your changes are in demand. The best for that is to create a [new discussion](https://github.com/OpenIMSDK/Open-IM-Server/discussions/new/choose) OR [Slack Communication](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg), or if you find an issue, [report it](https://github.com/OpenIMSDK/Open-IM-Server/issues/new/choose) first.
|
Before you start, please make sure your changes are in demand. The best for that is to create a [new discussion](https://github.com/OpenIMSDK/Open-IM-Server/discussions/new/choose) OR [Slack Communication](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q), or if you find an issue, [report it](https://github.com/OpenIMSDK/Open-IM-Server/issues/new/choose) first.
|
||||||
|
|
||||||
- [Code Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/go_code.md)
|
- [Code Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/go_code.md)
|
||||||
- [Docker Images Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/images.md)
|
- [Docker Images Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/images.md)
|
||||||
@ -357,21 +349,21 @@ Before you start, please make sure your changes are in demand. The best for that
|
|||||||
- [Commit Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/commit.md)
|
- [Commit Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/commit.md)
|
||||||
- [Versioning Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/version.md)
|
- [Versioning Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/version.md)
|
||||||
- [Interface Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/api.md)
|
- [Interface Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/api.md)
|
||||||
- [Log Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/log.md)
|
- [Log Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/logging.md)
|
||||||
- [Error Code Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/error_code.md)
|
- [Error Code Standards](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/error_code.md)
|
||||||
|
|
||||||
## :busts_in_silhouette: Community
|
## :busts_in_silhouette: Community
|
||||||
|
|
||||||
+ 📚 [OpenIM Community](https://github.com/OpenIMSDK/community)
|
+ 📚 [OpenIM Community](https://github.com/OpenIMSDK/community)
|
||||||
+ 💕 [OpenIM Interest Group](https://github.com/Openim-sigs)
|
+ 💕 [OpenIM Interest Group](https://github.com/Openim-sigs)
|
||||||
+ 🚀 [Join our Slack community](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg)
|
+ 🚀 [Join our Slack community](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)
|
||||||
+ :eyes: [Join our wechat (微信群)](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
|
+ :eyes: [Join our wechat (微信群)](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
|
||||||
|
|
||||||
## :calendar: Community Meetings
|
## :calendar: Community Meetings
|
||||||
|
|
||||||
We want anyone to get involved in our community and contributing code, we offer gifts and rewards, and we welcome you to join us every Thursday night.
|
We want anyone to get involved in our community and contributing code, we offer gifts and rewards, and we welcome you to join us every Thursday night.
|
||||||
|
|
||||||
Our conference is in the [OpenIM Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) 🎯, then you can search the Open-IM-Server pipeline to join
|
Our conference is in the [OpenIM Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) 🎯, then you can search the Open-IM-Server pipeline to join
|
||||||
|
|
||||||
We take notes of each [biweekly meeting](https://github.com/orgs/OpenIMSDK/discussions/categories/meeting) in [GitHub discussions](https://github.com/OpenIMSDK/Open-IM-Server/discussions/categories/meeting), Our historical meeting notes, as well as replays of the meetings are available at [Google Docs :bookmark_tabs:](https://docs.google.com/document/d/1nx8MDpuG74NASx081JcCpxPgDITNTpIIos0DS6Vr9GU/edit?usp=sharing).
|
We take notes of each [biweekly meeting](https://github.com/orgs/OpenIMSDK/discussions/categories/meeting) in [GitHub discussions](https://github.com/OpenIMSDK/Open-IM-Server/discussions/categories/meeting), Our historical meeting notes, as well as replays of the meetings are available at [Google Docs :bookmark_tabs:](https://docs.google.com/document/d/1nx8MDpuG74NASx081JcCpxPgDITNTpIIos0DS6Vr9GU/edit?usp=sharing).
|
||||||
|
|
||||||
|
65
build/README.md
Normal file
65
build/README.md
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# Building OpenIM
|
||||||
|
|
||||||
|
Building OpenIM is easy if you take advantage of the containerized build environment. This document will help guide you through understanding this build process.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
1. Docker, using one of the following configurations:
|
||||||
|
* **macOS** Install Docker for Mac. See installation instructions [here](https://docs.docker.com/docker-for-mac/).
|
||||||
|
**Note**: You will want to set the Docker VM to have at least 4GB of initial memory or building will likely fail.
|
||||||
|
* **Linux with local Docker** Install Docker according to the [instructions](https://docs.docker.com/installation/#installation) for your OS.
|
||||||
|
* **Windows with Docker Desktop WSL2 backend** Install Docker according to the [instructions](https://docs.docker.com/docker-for-windows/wsl-tech-preview/). Be sure to store your sources in the local Linux file system, not the Windows remote mount at `/mnt/c`.
|
||||||
|
|
||||||
|
**Note**: You will need to check if Docker CLI plugin buildx is properly installed (`docker-buildx` file should be present in `~/.docker/cli-plugins`). You can install buildx according to the [instructions](https://github.com/docker/buildx/blob/master/README.md#installing).
|
||||||
|
|
||||||
|
2. **Optional** [Google Cloud SDK](https://developers.google.com/cloud/sdk/)
|
||||||
|
|
||||||
|
You must install and configure Google Cloud SDK if you want to upload your release to Google Cloud Storage and may safely omit this otherwise.
|
||||||
|
|
||||||
|
## Actions
|
||||||
|
|
||||||
|
About [Images packages](https://github.com/orgs/OpenIMSDK/packages?repo_name=Open-IM-Server)
|
||||||
|
|
||||||
|
All files in the `build/images` directory are not templated and are instead rendered by Github Actions, which is an automated process.
|
||||||
|
|
||||||
|
Trigger condition:
|
||||||
|
1. create a new tag with the format `vX.Y.Z` (e.g. `v1.0.0`)
|
||||||
|
2. push the tag to the remote repository
|
||||||
|
3. wait for the build to finish
|
||||||
|
4. download the artifacts from the release page
|
||||||
|
|
||||||
|
## Make images
|
||||||
|
|
||||||
|
**help info:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make image.help
|
||||||
|
```
|
||||||
|
|
||||||
|
**build images:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make image
|
||||||
|
```
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
While it is possible to build OpenIM using a local golang installation, we have a build process that runs in a Docker container. This simplifies initial set up and provides for a very consistent build and test environment.
|
||||||
|
|
||||||
|
|
||||||
|
## Basic Flow
|
||||||
|
|
||||||
|
The scripts directly under [`build/`](.) are used to build and test. They will ensure that the `kube-build` Docker image is built (based on [`build/build-image/Dockerfile`](build-image/Dockerfile) and after base image's `KUBE_BUILD_IMAGE_CROSS_TAG` from Dockerfile is replaced with one of those actual tags of the base image, like `v1.13.9-2`) and then execute the appropriate command in that container. These scripts will both ensure that the right data is cached from run to run for incremental builds and will copy the results back out of the container. You can specify a different registry/name and version for `kube-cross` by setting `KUBE_CROSS_IMAGE` and `KUBE_CROSS_VERSION`, see [`common.sh`](common.sh) for more details.
|
||||||
|
|
||||||
|
The `kube-build` container image is built by first creating a "context" directory in `_output/images/build-image`. It is done there instead of at the root of the OpenIM repo to minimize the amount of data we need to package up when building the image.
|
||||||
|
|
||||||
|
There are 3 different containers instances that are run from this image. The first is a "data" container to store all data that needs to persist across to support incremental builds. Next there is an "rsync" container that is used to transfer data in and out to the data container. Lastly there is a "build" container that is used for actually doing build actions. The data container persists across runs while the rsync and build containers are deleted after each use.
|
||||||
|
|
||||||
|
`rsync` is used transparently behind the scenes to efficiently move data in and out of the container. This will use an ephemeral port picked by Docker. You can modify this by setting the `KUBE_RSYNC_PORT` env variable.
|
||||||
|
|
||||||
|
All Docker names are suffixed with a hash derived from the file path (to allow concurrent usage on things like CI machines) and a version number. When the version number changes all state is cleared and clean build is started. This allows the build infrastructure to be changed and signal to CI systems that old artifacts need to be deleted.
|
||||||
|
|
||||||
|
## Build artifacts
|
||||||
|
The build system output all its products to a top level directory in the source repository named `_output`.
|
||||||
|
These include the binary compiled packages (e.g. kubectl, kube-scheduler etc.) and archived Docker images.
|
||||||
|
If you intend to run a component with a docker image you will need to import it from this directory with
|
@ -255,6 +255,134 @@ builds:
|
|||||||
- "6"
|
- "6"
|
||||||
- "7"
|
- "7"
|
||||||
|
|
||||||
|
- binary: infra
|
||||||
|
id: infra
|
||||||
|
main: ./tools/infra/infra.go
|
||||||
|
goos:
|
||||||
|
- darwin
|
||||||
|
- windows
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- s390x
|
||||||
|
- mips64
|
||||||
|
- mips64le
|
||||||
|
- amd64
|
||||||
|
- ppc64le
|
||||||
|
- arm64
|
||||||
|
goarm:
|
||||||
|
- "6"
|
||||||
|
- "7"
|
||||||
|
|
||||||
|
- binary: ncpu
|
||||||
|
id: ncpu
|
||||||
|
main: ./tools/ncpu/ncpu.go
|
||||||
|
goos:
|
||||||
|
- darwin
|
||||||
|
- windows
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- s390x
|
||||||
|
- mips64
|
||||||
|
- mips64le
|
||||||
|
- amd64
|
||||||
|
- ppc64le
|
||||||
|
- arm64
|
||||||
|
goarm:
|
||||||
|
- "6"
|
||||||
|
- "7"
|
||||||
|
|
||||||
|
- binary: openim-web
|
||||||
|
id: openim-web
|
||||||
|
main: ./tools/openim-web/openim-web.go
|
||||||
|
goos:
|
||||||
|
- darwin
|
||||||
|
- windows
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- s390x
|
||||||
|
- mips64
|
||||||
|
- mips64le
|
||||||
|
- amd64
|
||||||
|
- ppc64le
|
||||||
|
- arm64
|
||||||
|
goarm:
|
||||||
|
- "6"
|
||||||
|
- "7"
|
||||||
|
|
||||||
|
- binary: component
|
||||||
|
id: component
|
||||||
|
main: ./tools/component/component.go
|
||||||
|
goos:
|
||||||
|
- darwin
|
||||||
|
- windows
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- s390x
|
||||||
|
- mips64
|
||||||
|
- mips64le
|
||||||
|
- amd64
|
||||||
|
- ppc64le
|
||||||
|
- arm64
|
||||||
|
goarm:
|
||||||
|
- "6"
|
||||||
|
- "7"
|
||||||
|
|
||||||
|
- binary: versionchecker
|
||||||
|
id: versionchecker
|
||||||
|
main: ./tools/versionchecker/versionchecker.go
|
||||||
|
goos:
|
||||||
|
- darwin
|
||||||
|
- windows
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- s390x
|
||||||
|
- mips64
|
||||||
|
- mips64le
|
||||||
|
- amd64
|
||||||
|
- ppc64le
|
||||||
|
- arm64
|
||||||
|
goarm:
|
||||||
|
- "6"
|
||||||
|
- "7"
|
||||||
|
|
||||||
|
- binary: changelog
|
||||||
|
id: changelog
|
||||||
|
main: ./tools/changelog/changelog.go
|
||||||
|
goos:
|
||||||
|
- darwin
|
||||||
|
- windows
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- s390x
|
||||||
|
- mips64
|
||||||
|
- mips64le
|
||||||
|
- amd64
|
||||||
|
- ppc64le
|
||||||
|
- arm64
|
||||||
|
goarm:
|
||||||
|
- "6"
|
||||||
|
- "7"
|
||||||
|
|
||||||
|
- binary: yamlfmt
|
||||||
|
id: yamlfmt
|
||||||
|
main: ./tools/yamlfmt/yamlfmt.go
|
||||||
|
goos:
|
||||||
|
- darwin
|
||||||
|
- windows
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- s390x
|
||||||
|
- mips64
|
||||||
|
- mips64le
|
||||||
|
- amd64
|
||||||
|
- ppc64le
|
||||||
|
- arm64
|
||||||
|
goarm:
|
||||||
|
- "6"
|
||||||
|
- "7"
|
||||||
|
|
||||||
|
# TODO:Need a script, such as the init - release to help binary to find the right directory
|
||||||
|
# ,which can be compiled binary
|
||||||
archives:
|
archives:
|
||||||
- format: tar.gz
|
- format: tar.gz
|
||||||
# this name template makes the OS and Arch compatible with the results of uname.
|
# this name template makes the OS and Arch compatible with the results of uname.
|
||||||
@ -265,12 +393,23 @@ archives:
|
|||||||
{{- else if eq .Arch "386" }}i386
|
{{- else if eq .Arch "386" }}i386
|
||||||
{{- else }}{{ .Arch }}{{ end }}
|
{{- else }}{{ .Arch }}{{ end }}
|
||||||
{{- if .Arm }}v{{ .Arm }}{{ end }}
|
{{- if .Arm }}v{{ .Arm }}{{ end }}
|
||||||
|
|
||||||
|
# Set this to true if you want all files in the archive to be in a single directory.
|
||||||
|
# If set to true and you extract the archive 'goreleaser_Linux_arm64.tar.gz',
|
||||||
|
# you'll get a folder 'goreleaser_Linux_arm64'.
|
||||||
|
# If set to false, all files are extracted separately.
|
||||||
|
# You can also set it to a custom folder name (templating is supported).
|
||||||
|
wrap_in_directory: true
|
||||||
|
|
||||||
# use zip for windows archives
|
# use zip for windows archives
|
||||||
files:
|
files:
|
||||||
- LICENSE
|
|
||||||
- README.md
|
|
||||||
- CHANGELOG/*
|
- CHANGELOG/*
|
||||||
- CONTRIBUTING.md
|
- deployment/*
|
||||||
|
- config/*
|
||||||
|
- build/*
|
||||||
|
- scripts/*
|
||||||
|
- Makefile
|
||||||
|
- install.sh
|
||||||
- docs/*
|
- docs/*
|
||||||
- src: "*.md"
|
- src: "*.md"
|
||||||
dst: docs
|
dst: docs
|
||||||
@ -339,7 +478,9 @@ changelog:
|
|||||||
# - image_templates:
|
# - image_templates:
|
||||||
# - "openimsdk/open-im-server:{{ .Tag }}-amd64"
|
# - "openimsdk/open-im-server:{{ .Tag }}-amd64"
|
||||||
# - "ghcr.io/goreleaser/goreleaser:{{ .Tag }}-amd64"
|
# - "ghcr.io/goreleaser/goreleaser:{{ .Tag }}-amd64"
|
||||||
# dockerfile: Dockerfile
|
# dockerfile: build/images/openim-api/Dockerfile.release
|
||||||
|
# ids:
|
||||||
|
# - openim-api
|
||||||
# use: buildx
|
# use: buildx
|
||||||
# build_flag_templates:
|
# build_flag_templates:
|
||||||
# - "--pull"
|
# - "--pull"
|
||||||
@ -359,7 +500,7 @@ changelog:
|
|||||||
# - image_templates:
|
# - image_templates:
|
||||||
# - "goreleaser/goreleaser:{{ .Tag }}-arm64"
|
# - "goreleaser/goreleaser:{{ .Tag }}-arm64"
|
||||||
# - "ghcr.io/goreleaser/goreleaser:{{ .Tag }}-arm64"
|
# - "ghcr.io/goreleaser/goreleaser:{{ .Tag }}-arm64"
|
||||||
# dockerfile: Dockerfile
|
# dockerfile: build/images/openim-api/Dockerfile.release
|
||||||
# use: buildx
|
# use: buildx
|
||||||
# build_flag_templates:
|
# build_flag_templates:
|
||||||
# - "--pull"
|
# - "--pull"
|
||||||
|
@ -43,7 +43,8 @@ COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-s
|
|||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
ENV PORT 10002
|
ENV PORT 10002
|
||||||
|
EXPOSE 10002
|
||||||
|
|
||||||
EXPOSE ${PORT}
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-api /usr/bin/openim-api
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-api --port ${PORT} -c ${SERVER_WORKDIR}/config"]
|
ENTRYPOINT ["bash", "-c", "openim-api -c $OPENIM_SERVER_CONFIG_NAME --port $PORT"]
|
||||||
|
8
build/images/openim-api/Dockerfile.release
Normal file
8
build/images/openim-api/Dockerfile.release
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
|
COPY openim-api /usr/bin/
|
||||||
|
|
||||||
|
# nosemgrep: dockerfile.security.missing-user.missing-user
|
||||||
|
ENTRYPOINT ["/usr/bin/openim-api"]
|
||||||
|
# nosemgrep: dockerfile.security.missing-user.missing-user
|
||||||
|
CMD ["--help"]
|
@ -42,4 +42,8 @@ WORKDIR /openim/openim-server
|
|||||||
COPY --from=builder $OPENIM_SERVER_BINDIR/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder $OPENIM_SERVER_BINDIR/platforms /openim/openim-server/_output/bin/platforms
|
||||||
COPY --from=builder ${SERVER_WORKDIR}/config /openim/openim-server/config
|
COPY --from=builder ${SERVER_WORKDIR}/config /openim/openim-server/config
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-cmdutils"]
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-cmdutils /usr/bin/openim-cmdutils
|
||||||
|
|
||||||
|
ENTRYPOINT ["openim-cmdutils"]
|
||||||
|
|
||||||
|
CMD ["--help"]
|
||||||
|
@ -41,4 +41,8 @@ WORKDIR /openim/openim-server
|
|||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-crontask"]
|
ENV OPENIM_SERVER_CONFIG_NAME=/openim/openim-server/config
|
||||||
|
|
||||||
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-crontask /usr/bin/openim-crontask
|
||||||
|
|
||||||
|
CMD ["bash", "-c", "openim-crontask -c $OPENIM_SERVER_CONFIG_NAME"]
|
||||||
|
@ -41,10 +41,12 @@ WORKDIR /openim/openim-server
|
|||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
ENV OS ${OS}
|
ENV PORT 10140 \
|
||||||
ENV ARCH ${ARCH}
|
WS_PORT 10001
|
||||||
|
|
||||||
EXPOSE 10140
|
EXPOSE 10140
|
||||||
EXPOSE 10001
|
EXPOSE 10001
|
||||||
|
|
||||||
CMD ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-msggateway --port 10140 --ws_port 10001
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-msggateway /usr/bin/openim-msggateway
|
||||||
|
|
||||||
|
CMD ["bash", "-c", "openim-msggateway -c $OPENIM_SERVER_CONFIG_NAME --port $PORT --ws_port $WS_PORT"]
|
@ -36,12 +36,11 @@ RUN make build BINS=openim-msgtransfer
|
|||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
ENV OS ${OS}
|
|
||||||
ENV ARCH ${ARCH}
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
CMD ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-msgtransfer
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-msgtransfer /usr/bin/openim-msgtransfer
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then openim-msgtransfer -c $OPENIM_SERVER_CONFIG_NAME --prometheus_port $PROMETHEUS_PORT; else openim-msgtransfer -c $OPENIM_SERVER_CONFIG_NAME; fi"]
|
@ -15,6 +15,7 @@
|
|||||||
# OpenIM base image: https://github.com/openim-sigs/openim-base-image
|
# OpenIM base image: https://github.com/openim-sigs/openim-base-image
|
||||||
|
|
||||||
# Set go mod installation source and proxy
|
# Set go mod installation source and proxy
|
||||||
|
# docker run -e "PORT=10003" -e "PROMETHEUSORT=4321" --network host -it 67ef891ad1ff
|
||||||
|
|
||||||
FROM golang:1.20 AS builder
|
FROM golang:1.20 AS builder
|
||||||
|
|
||||||
@ -38,12 +39,14 @@ FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
|||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
ENV OS ${OS}
|
|
||||||
ENV ARCH ${ARCH}
|
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
|
ENV PORT 10170 \
|
||||||
|
PROMETHEUS_PORT 20170
|
||||||
|
|
||||||
EXPOSE 10170
|
EXPOSE 10170
|
||||||
|
|
||||||
CMD ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-push --port 10170
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-push /usr/bin/openim-push
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then openim-push -c $OPENIM_SERVER_CONFIG_NAME --port $PORT --prometheus_port $PROMETHEUS_PORT; else openim-push -c $OPENIM_SERVER_CONFIG_NAME --port $PORT; fi"]
|
@ -33,20 +33,20 @@ COPY . .
|
|||||||
|
|
||||||
RUN make clean
|
RUN make clean
|
||||||
|
|
||||||
# RUN make build BINS=openim-rpc
|
RUN make build BINS=openim-rpc-auth
|
||||||
|
|
||||||
RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-auth ./cmd/openim-rpc/openim-rpc-auth
|
|
||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
ENV OS ${OS}
|
|
||||||
ENV ARCH ${ARCH}
|
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
|
ENV PORT 10160 \
|
||||||
|
PROMETHEUS_PORT 20160
|
||||||
|
|
||||||
EXPOSE 10160
|
EXPOSE 10160
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-auth --port 10160 -c ${SERVER_WORKDIR}/config"]
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-auth /usr/bin/openim-rpc-auth
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-auth --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-auth --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
@ -33,27 +33,20 @@ COPY . .
|
|||||||
|
|
||||||
RUN make clean
|
RUN make clean
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc
|
RUN make build BINS=openim-rpc-conversation
|
||||||
# RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-conversation ./cmd/openim-rpc/openim-rpc-conversation
|
|
||||||
|
|
||||||
RUN rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-friend && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-group && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-msg && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-third && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-user && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-auth
|
|
||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
ENV OS ${OS}
|
|
||||||
ENV ARCH ${ARCH}
|
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
EXPOSE 10230
|
ENV PORT 10230 \
|
||||||
EXPOSE 20230
|
PROMETHEUS_PORT 20230
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-conversation --port 10230 --prometheus_port 20230 -c ${SERVER_WORKDIR}/config"]
|
EXPOSE 10230
|
||||||
|
|
||||||
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-conversation /usr/bin/openim-rpc-conversation
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-conversation --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-conversation --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
@ -33,27 +33,20 @@ COPY . .
|
|||||||
|
|
||||||
RUN make clean
|
RUN make clean
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc
|
RUN make build BINS=openim-rpc-friend
|
||||||
# RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-friend ./cmd/openim-rpc/openim-rpc-friend
|
|
||||||
|
|
||||||
RUN rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-group && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-msg && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-third && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-user && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-conversation && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-auth
|
|
||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
ENV OS ${OS}
|
|
||||||
ENV ARCH ${ARCH}
|
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
EXPOSE 10120
|
ENV PORT 10120 \
|
||||||
EXPOSE 20120
|
PROMETHEUS_PORT 20120
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-friend --port 10120 --prometheus_port 20120 -c ${SERVER_WORKDIR}/config"]
|
EXPOSE 10120
|
||||||
|
|
||||||
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-friend /usr/bin/openim-rpc-friend
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-friend --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-friend --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
||||||
|
@ -33,27 +33,20 @@ COPY . .
|
|||||||
|
|
||||||
RUN make clean
|
RUN make clean
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc
|
RUN make build BINS=openim-rpc-group
|
||||||
# RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-group ./cmd/openim-rpc/openim-rpc-group
|
|
||||||
|
|
||||||
RUN rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-friend && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-msg && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-third && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-user && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-conversation && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-auth
|
|
||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
ENV OS ${OS}
|
|
||||||
ENV ARCH ${ARCH}
|
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
EXPOSE 10150
|
ENV PORT 10150 \
|
||||||
EXPOSE 20150
|
PROMETHEUS_PORT 20150
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-group --port 10150 --prometheus_port 20150 -c ${SERVER_WORKDIR}/config"]
|
EXPOSE 10150
|
||||||
|
|
||||||
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-group /usr/bin/openim-rpc-group
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-group --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-group --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
@ -33,27 +33,20 @@ COPY . .
|
|||||||
|
|
||||||
RUN make clean
|
RUN make clean
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc
|
RUN make build BINS=openim-rpc-msg
|
||||||
# RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-msg ./cmd/openim-rpc/openim-rpc-msg
|
|
||||||
|
|
||||||
RUN rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-friend && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-group && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-third && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-user && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-conversation && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-auth
|
|
||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
ENV OS ${OS}
|
|
||||||
ENV ARCH ${ARCH}
|
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
EXPOSE 10130
|
ENV PORT 10130 \
|
||||||
EXPOSE 20130
|
PROMETHEUS_PORT 20130
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-msg --port 10130 --prometheus_port 20130 -c ${SERVER_WORKDIR}/config"]
|
EXPOSE 10130
|
||||||
|
|
||||||
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-msg /usr/bin/openim-rpc-msg
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-msg --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-msg --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
@ -33,26 +33,21 @@ COPY . .
|
|||||||
|
|
||||||
RUN make clean
|
RUN make clean
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc
|
RUN make build BINS=openim-rpc-third
|
||||||
# RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-third ./cmd/openim-rpc/openim-rpc-third
|
|
||||||
|
|
||||||
RUN rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-friend && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-group && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-msg && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-user && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-conversation && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-auth
|
|
||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
ENV OS ${OS}
|
|
||||||
ENV ARCH ${ARCH}
|
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
EXPOSE 10200
|
ENV PORT 10190 \
|
||||||
|
PROMETHEUS_PORT 21301
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-third --port 10200 -c ${SERVER_WORKDIR}/config"]
|
EXPOSE 10190
|
||||||
|
|
||||||
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-third /usr/bin/openim-rpc-third
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-third --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-third --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
||||||
|
@ -33,26 +33,20 @@ COPY . .
|
|||||||
|
|
||||||
RUN make clean
|
RUN make clean
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc
|
RUN make build BINS=openim-rpc-user
|
||||||
# RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-user ./cmd/openim-rpc/openim-rpc-user
|
|
||||||
|
|
||||||
RUN rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-friend && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-group && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-msg && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-third && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-conversation && \
|
|
||||||
rm -rf ./_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-auth
|
|
||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
ENV OS ${OS}
|
|
||||||
ENV ARCH ${ARCH}
|
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
|
ENV PORT 10110 \
|
||||||
|
PROMETHEUS_PORT 20110
|
||||||
|
|
||||||
EXPOSE 10110
|
EXPOSE 10110
|
||||||
|
|
||||||
CMD ["bash", "-c","${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-user --port 10110 -c ${SERVER_WORKDIR}/config"]
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-user /usr/bin/openim-rpc-user
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-user --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-user --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
||||||
|
49
build/images/openim-tools/component/Dockerfile
Normal file
49
build/images/openim-tools/component/Dockerfile
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# OpenIM base image: https://github.com/openim-sigs/openim-base-image
|
||||||
|
|
||||||
|
# Set go mod installation source and proxy
|
||||||
|
|
||||||
|
FROM golang:1.20 AS builder
|
||||||
|
|
||||||
|
ARG GO111MODULE=on
|
||||||
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
|
ENV GO111MODULE=$GO111MODULE
|
||||||
|
ENV GOPROXY=$GOPROXY
|
||||||
|
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
RUN go mod download
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN make clean
|
||||||
|
RUN make build BINS=component
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
|
COPY --from=builder /openim/openim-server/_output/bin/tools /openim/openim-server/_output/bin/tools/
|
||||||
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|
||||||
|
ENV OPENIM_SERVER_CONFIG_NAME=/openim/openim-server/config
|
||||||
|
|
||||||
|
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/component /usr/bin/component
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "component -c $OPENIM_SERVER_CONFIG_NAME"]
|
57
build/images/openim-tools/openim-web/Dockerfile
Normal file
57
build/images/openim-tools/openim-web/Dockerfile
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# OpenIM base image: https://github.com/openim-sigs/openim-base-image
|
||||||
|
|
||||||
|
# Set go mod installation source and proxy
|
||||||
|
|
||||||
|
FROM golang:1.20 AS builder
|
||||||
|
|
||||||
|
ARG GO111MODULE=on
|
||||||
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
|
ENV GO111MODULE=$GO111MODULE
|
||||||
|
ENV GOPROXY=$GOPROXY
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y curl unzip
|
||||||
|
|
||||||
|
RUN curl -LO https://app-1302656840.cos.ap-nanjing.myqcloud.com/dist.zip \
|
||||||
|
&& unzip dist.zip -d ./ \
|
||||||
|
&& rm dist.zip
|
||||||
|
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
RUN go mod download
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN make clean
|
||||||
|
RUN make build BINS=openim-web
|
||||||
|
|
||||||
|
FROM ghcr.io/openim-sigs/openim-ubuntu-image:latest
|
||||||
|
|
||||||
|
WORKDIR /openim/openim-server
|
||||||
|
|
||||||
|
COPY --from=builder /openim/openim-server/_output/bin/tools /openim/openim-server/_output/bin/tools/
|
||||||
|
COPY --from=builder /openim/openim-server/dist /openim/openim-server/dist
|
||||||
|
|
||||||
|
ENV PORT 11001
|
||||||
|
ENV DISTPATH /openim/openim-server/dist
|
||||||
|
|
||||||
|
EXPOSE 11001
|
||||||
|
|
||||||
|
RUN mv ${OPENIM_SERVER_BINDIR}/tools/$(get_os)/$(get_arch)/openim-web /usr/bin/openim-web
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "-c", "openim-web -port $PORT -distPath $DISTPATH"]
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-api ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-api","--port", "10002"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-crontask ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-crontask"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-rpc-msg_gateway ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-rpc-msg_gateway","--port", "10140" "--ws_port", "10001", "--prometheus_port", "20240"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-msgtransfer ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-msgtransfer","--prometheus_port", "21400"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-push ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-push", "--port", "10170", "--prometheus_port", "20170"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-rpc-auth ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-rpc-auth", "--port", "10160"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-rpc-conversation ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-rpc-conversation", "--port", "10230", "--prometheus_port","20230"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-rpc-friend ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-rpc-friend", "--port", "10120", "--prometheus_port","20120"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-rpc-group ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-rpc-group", "--port", "10150", "--prometheus_port","20150"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-rpc-msg ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-rpc-msg", "--port", "10130", "--prometheus_port","20130"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-rpc-third ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-rpc-third", "--port", "10200"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
FROM ubuntu
|
|
||||||
|
|
||||||
WORKDIR /openim/openim-server/bin
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install apt-transport-https && apt-get install procps\
|
|
||||||
&&apt-get install net-tools
|
|
||||||
#Non-interactive operation
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
RUN apt-get install -y vim curl tzdata gawk
|
|
||||||
#Time zone adjusted to East eighth District
|
|
||||||
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
RUN apt-get -qq update \
|
|
||||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
|
||||||
COPY ./openim-rpc-user ./
|
|
||||||
|
|
||||||
VOLUME ["/openim/openim-server/logs","/openim/openim-server/config"]
|
|
||||||
|
|
||||||
CMD ["./openim-rpc-user", "--port", "10110"]
|
|
@ -1,378 +0,0 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
|
||||||
# Infrastructural configurations, please modify based on your setup
|
|
||||||
# -----------------------------------------------------------------
|
|
||||||
|
|
||||||
###################### Zookeeper ######################
|
|
||||||
# Zookeeper configuration
|
|
||||||
# It's not recommended to modify the schema
|
|
||||||
#
|
|
||||||
# Zookeeper address
|
|
||||||
# Zookeeper username
|
|
||||||
# Zookeeper password
|
|
||||||
zookeeper:
|
|
||||||
schema: openim
|
|
||||||
address: [ 127.0.0.1:2181 ]
|
|
||||||
username:
|
|
||||||
password:
|
|
||||||
|
|
||||||
###################### Mysql ######################
|
|
||||||
# MySQL configuration
|
|
||||||
# Currently, only single machine setup is supported
|
|
||||||
#
|
|
||||||
# Maximum number of open connections
|
|
||||||
# Maximum number of idle connections
|
|
||||||
# Maximum lifetime in seconds a connection can be reused
|
|
||||||
# Log level: 1=slient, 2=error, 3=warn, 4=info
|
|
||||||
# Slow query threshold in milliseconds
|
|
||||||
mysql:
|
|
||||||
address: [ 127.0.0.1:13306 ]
|
|
||||||
username: root
|
|
||||||
password: openIM123
|
|
||||||
database: openIM_v3
|
|
||||||
maxOpenConn: 1000
|
|
||||||
maxIdleConn: 100
|
|
||||||
maxLifeTime: 60
|
|
||||||
logLevel: 4
|
|
||||||
slowThreshold: 500
|
|
||||||
|
|
||||||
###################### Mongo ######################
|
|
||||||
# MongoDB configuration
|
|
||||||
# If uri is not empty, it will be used directly
|
|
||||||
#
|
|
||||||
# MongoDB address for standalone setup, Mongos address for sharded cluster setup
|
|
||||||
# Default MongoDB database name
|
|
||||||
# Maximum connection pool size
|
|
||||||
mongo:
|
|
||||||
uri:
|
|
||||||
address: [ 127.0.0.1:37017 ]
|
|
||||||
database: openIM_v3
|
|
||||||
username: root
|
|
||||||
password: openIM123
|
|
||||||
maxPoolSize: 100
|
|
||||||
|
|
||||||
###################### Redis ######################
|
|
||||||
# Redis configuration
|
|
||||||
#
|
|
||||||
# Username is required only for Redis version 6.0+
|
|
||||||
redis:
|
|
||||||
address: [ 127.0.0.1:16379 ]
|
|
||||||
username:
|
|
||||||
password: openIM123
|
|
||||||
|
|
||||||
###################### Kafka ######################
|
|
||||||
# Kafka configuration
|
|
||||||
#
|
|
||||||
# Kafka username
|
|
||||||
# Kafka password
|
|
||||||
# It's not recommended to modify this topic name
|
|
||||||
# Consumer group ID, it's not recommended to modify
|
|
||||||
kafka:
|
|
||||||
username:
|
|
||||||
password:
|
|
||||||
addr: [ 127.0.0.1:9092 ]
|
|
||||||
latestMsgToRedis:
|
|
||||||
topic: "latestMsgToRedis"
|
|
||||||
offlineMsgToMongo:
|
|
||||||
topic: "offlineMsgToMongoMysql"
|
|
||||||
msgToPush:
|
|
||||||
topic: "msgToPush"
|
|
||||||
consumerGroupID:
|
|
||||||
msgToRedis: redis
|
|
||||||
msgToMongo: mongo
|
|
||||||
msgToMySql: mysql
|
|
||||||
msgToPush: push
|
|
||||||
|
|
||||||
###################### RPC ######################
|
|
||||||
# RPC configuration
|
|
||||||
#
|
|
||||||
# IP address to register with zookeeper when starting RPC, the IP and corresponding rpcPort should be accessible by api/gateway
|
|
||||||
# Default listen IP is 0.0.0.0
|
|
||||||
rpc:
|
|
||||||
registerIP:
|
|
||||||
listenIP: 0.0.0.0
|
|
||||||
|
|
||||||
###################### API ######################
|
|
||||||
# API configuration
|
|
||||||
#
|
|
||||||
# API service port
|
|
||||||
# Default listen IP is 0.0.0.0
|
|
||||||
api:
|
|
||||||
openImApiPort: [ 10002 ]
|
|
||||||
listenIP: 0.0.0.0
|
|
||||||
|
|
||||||
###################### Gateway ######################
|
|
||||||
# Object storage configuration
|
|
||||||
#
|
|
||||||
# Use minio for object storage
|
|
||||||
# API URL should be accessible by the app
|
|
||||||
# It's not recommended to modify the bucket name
|
|
||||||
# Endpoint should be accessible by the app
|
|
||||||
# Session token
|
|
||||||
# Configuration for Tencent COS
|
|
||||||
# Configuration for Aliyun OSS
|
|
||||||
# apiURL is the address of the api, the access address of the app, use s3 must be configured
|
|
||||||
# minio.endpoint can be configured as an intranet address,
|
|
||||||
# minio.signEndpoint is minio public network address
|
|
||||||
object:
|
|
||||||
enable: "minio"
|
|
||||||
apiURL: "http://127.0.0.1:10002"
|
|
||||||
minio:
|
|
||||||
bucket: "openim"
|
|
||||||
endpoint: "http://127.0.0.1:10005"
|
|
||||||
accessKeyID: "root"
|
|
||||||
secretAccessKey: "openIM123"
|
|
||||||
sessionToken: ""
|
|
||||||
signEndpoint: "http://127.0.0.1:10005"
|
|
||||||
cos:
|
|
||||||
bucketURL: "https://temp-1252357374.cos.ap-chengdu.myqcloud.com"
|
|
||||||
secretID: ""
|
|
||||||
secretKey: ""
|
|
||||||
sessionToken: ""
|
|
||||||
oss:
|
|
||||||
endpoint: "https://oss-cn-chengdu.aliyuncs.com"
|
|
||||||
bucket: "demo-9999999"
|
|
||||||
bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com"
|
|
||||||
accessKeyID: ""
|
|
||||||
accessKeySecret: ""
|
|
||||||
sessionToken: ""
|
|
||||||
|
|
||||||
# RPC service ports
|
|
||||||
# These ports are passed into the program by the script and are not recommended to modify
|
|
||||||
# For launching multiple programs, just fill in multiple ports separated by commas
|
|
||||||
# For example, [10110, 10111]
|
|
||||||
rpcPort:
|
|
||||||
openImUserPort: [ 10110 ]
|
|
||||||
openImFriendPort: [ 10120 ]
|
|
||||||
openImMessagePort: [ 10130 ]
|
|
||||||
openImMessageGatewayPort: [ 10140 ]
|
|
||||||
openImGroupPort: [ 10150 ]
|
|
||||||
openImAuthPort: [ 10160 ]
|
|
||||||
openImPushPort: [ 10170 ]
|
|
||||||
openImConversationPort: [ 10180 ]
|
|
||||||
openImThirdPort: [ 10190 ]
|
|
||||||
|
|
||||||
# RPC service names for registration, it's not recommended to modify these
|
|
||||||
rpcRegisterName:
|
|
||||||
openImUserName: User
|
|
||||||
openImFriendName: Friend
|
|
||||||
openImMsgName: Msg
|
|
||||||
openImPushName: Push
|
|
||||||
openImMessageGatewayName: MessageGateway
|
|
||||||
openImGroupName: Group
|
|
||||||
openImAuthName: Auth
|
|
||||||
openImConversationName: Conversation
|
|
||||||
openImThirdName: Third
|
|
||||||
|
|
||||||
# Log configuration
|
|
||||||
#
|
|
||||||
# Storage directory
|
|
||||||
# Log rotation time
|
|
||||||
# Maximum number of logs to retain
|
|
||||||
# Log level, 6 means all levels
|
|
||||||
# Whether to output to stdout
|
|
||||||
# Whether to output in json format
|
|
||||||
# Whether to include stack trace in logs
|
|
||||||
log:
|
|
||||||
storageLocation: ../../../../../logs/
|
|
||||||
rotationTime: 24
|
|
||||||
remainRotationCount: 2
|
|
||||||
remainLogLevel: 6
|
|
||||||
isStdout: false
|
|
||||||
isJson: false
|
|
||||||
withStack: false
|
|
||||||
|
|
||||||
# Long connection server configuration
|
|
||||||
#
|
|
||||||
# Websocket port for msg_gateway
|
|
||||||
# Maximum number of websocket connections
|
|
||||||
# Maximum length of websocket request package
|
|
||||||
# Websocket connection handshake timeout
|
|
||||||
longConnSvr:
|
|
||||||
openImWsPort: [ 10001 ]
|
|
||||||
websocketMaxConnNum: 100000
|
|
||||||
websocketMaxMsgLen: 4096
|
|
||||||
websocketTimeout: 10
|
|
||||||
|
|
||||||
# Push notification service configuration
|
|
||||||
#
|
|
||||||
# Use GeTui for push notifications
|
|
||||||
# GeTui offline push configuration
|
|
||||||
# FCM offline push configuration
|
|
||||||
# Account file, place it in the config directory
|
|
||||||
# JPush configuration, modify these after applying in JPush backend
|
|
||||||
push:
|
|
||||||
enable: getui
|
|
||||||
geTui:
|
|
||||||
pushUrl: "https://restapi.getui.com/v2/$appId"
|
|
||||||
masterSecret: ""
|
|
||||||
appKey: ""
|
|
||||||
intent: ""
|
|
||||||
channelID: ""
|
|
||||||
channelName: ""
|
|
||||||
fcm:
|
|
||||||
serviceAccount: "x.json"
|
|
||||||
jpns:
|
|
||||||
appKey:
|
|
||||||
masterSecret:
|
|
||||||
pushUrl:
|
|
||||||
pushIntent:
|
|
||||||
|
|
||||||
# App manager configuration
|
|
||||||
#
|
|
||||||
# Built-in app manager user IDs
|
|
||||||
# Built-in app manager nicknames
|
|
||||||
manager:
|
|
||||||
userID: [ "openIM123456","openIM654321","openIMAdmin" ]
|
|
||||||
nickname: [ "system1","system2", "system3" ]
|
|
||||||
|
|
||||||
# Multi-platform login policy
|
|
||||||
# For each platform(Android, iOS, Windows, Mac, web), only one can be online at a time
|
|
||||||
multiLoginPolicy: 1
|
|
||||||
|
|
||||||
# Whether to store messages in MySQL, messages in MySQL are only used for management background
|
|
||||||
chatPersistenceMysql: true
|
|
||||||
|
|
||||||
# Message cache timeout in seconds, it's not recommended to modify
|
|
||||||
msgCacheTimeout: 86400
|
|
||||||
|
|
||||||
# Whether to enable read receipts for group chat
|
|
||||||
groupMessageHasReadReceiptEnable: true
|
|
||||||
|
|
||||||
# Whether to enable read receipts for single chat
|
|
||||||
singleMessageHasReadReceiptEnable: true
|
|
||||||
|
|
||||||
# MongoDB offline message retention period in days
|
|
||||||
retainChatRecords: 365
|
|
||||||
|
|
||||||
# Schedule to clear expired messages(older than retainChatRecords days) in MongoDB every Wednesday at 2am
|
|
||||||
# This deletion is just for cleaning up disk usage according to previous configuration retainChatRecords, no notification will be sent
|
|
||||||
chatRecordsClearTime: "0 2 * * 3"
|
|
||||||
|
|
||||||
# Schedule to auto delete messages every day at 2am
|
|
||||||
# This deletion is for messages that have been retained for more than msg_destruct_time (seconds) in the conversation field
|
|
||||||
msgDestructTime: "0 2 * * *"
|
|
||||||
|
|
||||||
# Secret key
|
|
||||||
secret: openIM123
|
|
||||||
|
|
||||||
# Token policy
|
|
||||||
#
|
|
||||||
# Token expiration period in days
|
|
||||||
tokenPolicy:
|
|
||||||
expire: 90
|
|
||||||
|
|
||||||
# Message verification policy
|
|
||||||
#
|
|
||||||
# Whether to verify friendship when sending messages
|
|
||||||
messageVerify:
|
|
||||||
friendVerify: false
|
|
||||||
|
|
||||||
# iOS push notification configuration
|
|
||||||
#
|
|
||||||
# iOS push notification sound
|
|
||||||
# Whether to count badge
|
|
||||||
# Whether it's production environment
|
|
||||||
iosPush:
|
|
||||||
pushSound: "xxx"
|
|
||||||
badgeCount: true
|
|
||||||
production: false
|
|
||||||
|
|
||||||
# Callback configuration
|
|
||||||
#
|
|
||||||
# Callback URL
|
|
||||||
# Whether to enable this callback event
|
|
||||||
# Timeout in seconds
|
|
||||||
# Whether to continue execution if callback fails
|
|
||||||
callback:
|
|
||||||
url:
|
|
||||||
beforeSendSingleMsg:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
afterSendSingleMsg:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
beforeSendGroupMsg:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
afterSendGroupMsg:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
msgModify:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
userOnline:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
userOffline:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
userKickOff:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
offlinePush:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
onlinePush:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
superGroupOnlinePush:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
beforeAddFriend:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
beforeCreateGroup:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
beforeMemberJoinGroup:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
beforeSetGroupMemberInfo:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
setMessageReactionExtensions:
|
|
||||||
enable: false
|
|
||||||
timeout: 5
|
|
||||||
failedContinue: true
|
|
||||||
|
|
||||||
###################### Prometheus ######################
|
|
||||||
# Prometheus configuration
|
|
||||||
# The number of Prometheus ports per service needs to correspond to rpcPort
|
|
||||||
# The number of ports needs to be consistent with msg_transfer_service_num in script/path_info.sh
|
|
||||||
prometheus:
|
|
||||||
enable: false
|
|
||||||
userPrometheusPort: [ 20110 ]
|
|
||||||
friendPrometheusPort: [ 20120 ]
|
|
||||||
messagePrometheusPort: [ 20130 ]
|
|
||||||
messageGatewayPrometheusPort: [ 20140 ]
|
|
||||||
groupPrometheusPort: [ 20150 ]
|
|
||||||
authPrometheusPort: [ 20160 ]
|
|
||||||
pushPrometheusPort: [ 20170 ]
|
|
||||||
conversationPrometheusPort: [ 20230 ]
|
|
||||||
rtcPrometheusPort: [ 21300 ]
|
|
||||||
thirdPrometheusPort: [ 21301 ]
|
|
||||||
messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ]
|
|
@ -28,9 +28,9 @@
|
|||||||
# Zookeeper password
|
# Zookeeper password
|
||||||
zookeeper:
|
zookeeper:
|
||||||
schema: openim
|
schema: openim
|
||||||
address: [ 127.0.0.1:2181 ]
|
address: [ 172.28.0.1:12181 ]
|
||||||
username:
|
username: ''
|
||||||
password:
|
password: ''
|
||||||
|
|
||||||
###################### Mysql ######################
|
###################### Mysql ######################
|
||||||
# MySQL configuration
|
# MySQL configuration
|
||||||
@ -42,7 +42,7 @@ zookeeper:
|
|||||||
# Log level: 1=slient, 2=error, 3=warn, 4=info
|
# Log level: 1=slient, 2=error, 3=warn, 4=info
|
||||||
# Slow query threshold in milliseconds
|
# Slow query threshold in milliseconds
|
||||||
mysql:
|
mysql:
|
||||||
address: [ 127.0.0.1:13306 ]
|
address: [ 172.28.0.1:13306 ]
|
||||||
username: root
|
username: root
|
||||||
password: openIM123
|
password: openIM123
|
||||||
database: openIM_v3
|
database: openIM_v3
|
||||||
@ -60,8 +60,8 @@ mysql:
|
|||||||
# Default MongoDB database name
|
# Default MongoDB database name
|
||||||
# Maximum connection pool size
|
# Maximum connection pool size
|
||||||
mongo:
|
mongo:
|
||||||
uri:
|
uri: ''
|
||||||
address: [ 127.0.0.1:37017 ]
|
address: [ 172.28.0.1:37017 ]
|
||||||
database: openIM_v3
|
database: openIM_v3
|
||||||
username: root
|
username: root
|
||||||
password: openIM123
|
password: openIM123
|
||||||
@ -72,8 +72,8 @@ mongo:
|
|||||||
#
|
#
|
||||||
# Username is required only for Redis version 6.0+
|
# Username is required only for Redis version 6.0+
|
||||||
redis:
|
redis:
|
||||||
address: [ 127.0.0.1:16379 ]
|
address: [ 172.28.0.1:16379 ]
|
||||||
username:
|
username: ''
|
||||||
password: openIM123
|
password: openIM123
|
||||||
|
|
||||||
###################### Kafka configuration information ######################
|
###################### Kafka configuration information ######################
|
||||||
@ -84,9 +84,9 @@ redis:
|
|||||||
# It's not recommended to modify this topic name
|
# It's not recommended to modify this topic name
|
||||||
# Consumer group ID, it's not recommended to modify
|
# Consumer group ID, it's not recommended to modify
|
||||||
kafka:
|
kafka:
|
||||||
username:
|
username: ''
|
||||||
password:
|
password: ''
|
||||||
addr: [ 127.0.0.1:9092 ]
|
addr: [ 172.28.0.1:19094 ]
|
||||||
latestMsgToRedis:
|
latestMsgToRedis:
|
||||||
topic: "latestMsgToRedis"
|
topic: "latestMsgToRedis"
|
||||||
offlineMsgToMongo:
|
offlineMsgToMongo:
|
||||||
@ -105,7 +105,7 @@ kafka:
|
|||||||
# IP address to register with zookeeper when starting RPC, the IP and corresponding rpcPort should be accessible by api/gateway
|
# IP address to register with zookeeper when starting RPC, the IP and corresponding rpcPort should be accessible by api/gateway
|
||||||
# Default listen IP is 0.0.0.0
|
# Default listen IP is 0.0.0.0
|
||||||
rpc:
|
rpc:
|
||||||
registerIP:
|
registerIP: ''
|
||||||
listenIP: 0.0.0.0
|
listenIP: 0.0.0.0
|
||||||
|
|
||||||
###################### API configuration information ######################
|
###################### API configuration information ######################
|
||||||
@ -132,26 +132,27 @@ api:
|
|||||||
# minio.signEndpoint is minio public network address
|
# minio.signEndpoint is minio public network address
|
||||||
object:
|
object:
|
||||||
enable: "minio"
|
enable: "minio"
|
||||||
apiURL: "http://127.0.0.1:10002"
|
apiURL: "http://14.153.6.114:10002"
|
||||||
minio:
|
minio:
|
||||||
bucket: "openim"
|
bucket: "openim"
|
||||||
endpoint: "http://127.0.0.1:10005"
|
endpoint: "http://172.28.0.1:10005"
|
||||||
accessKeyID: "root"
|
accessKeyID: "root"
|
||||||
secretAccessKey: "openIM123"
|
secretAccessKey: "openIM123"
|
||||||
sessionToken: ""
|
sessionToken: ''
|
||||||
signEndpoint: "http://127.0.0.1:10005"
|
signEndpoint: "http://14.153.6.114:10005"
|
||||||
cos:
|
cos:
|
||||||
bucketURL: "https://temp-1252357374.cos.ap-chengdu.myqcloud.com"
|
bucketURL: https://temp-1252357374.cos.ap-chengdu.myqcloud.com
|
||||||
secretID: ""
|
secretID: ''
|
||||||
secretKey: ""
|
secretKey: ''
|
||||||
sessionToken: ""
|
sessionToken: ''
|
||||||
oss:
|
oss:
|
||||||
endpoint: "https://oss-cn-chengdu.aliyuncs.com"
|
endpoint: "https://oss-cn-chengdu.aliyuncs.com"
|
||||||
bucket: "demo-9999999"
|
bucket: "demo-9999999"
|
||||||
bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com"
|
bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com"
|
||||||
accessKeyID: ""
|
accessKeyID: ''
|
||||||
accessKeySecret: ""
|
accessKeySecret: ''
|
||||||
sessionToken: ""
|
sessionToken: ''
|
||||||
|
|
||||||
|
|
||||||
###################### RPC Port Configuration ######################
|
###################### RPC Port Configuration ######################
|
||||||
# RPC service ports
|
# RPC service ports
|
||||||
@ -193,11 +194,11 @@ rpcRegisterName:
|
|||||||
# Whether to output in json format
|
# Whether to output in json format
|
||||||
# Whether to include stack trace in logs
|
# Whether to include stack trace in logs
|
||||||
log:
|
log:
|
||||||
storageLocation: ../../../../../logs/
|
storageLocation: ../logs
|
||||||
rotationTime: 24
|
rotationTime: 24
|
||||||
remainRotationCount: 2
|
remainRotationCount: 2
|
||||||
remainLogLevel: 6
|
remainLogLevel: 6
|
||||||
isStdout: false
|
isStdout: false
|
||||||
isJson: false
|
isJson: false
|
||||||
withStack: false
|
withStack: false
|
||||||
|
|
||||||
|
@ -19,13 +19,27 @@ Kubernetes: >= 1.16.0-0
|
|||||||
Helm: >= 3.0
|
Helm: >= 3.0
|
||||||
```
|
```
|
||||||
|
|
||||||
假设 OpenIM 项目根目录路径为 `OpenIM_ROOT`
|
|
||||||
|
|
||||||
进入 OpenIM 项目根目录
|
### 最低配置
|
||||||
|
|
||||||
$ cd ${OpenIM_ROOT}
|
建议生产环境的最低配置如下:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
CPU: 4
|
||||||
|
Memory: 8G
|
||||||
|
Disk: 100G
|
||||||
|
```
|
||||||
|
|
||||||
|
## 生成配置文件
|
||||||
|
|
||||||
|
我们将自动文件全部自动化处理了,所以生成配置文件对于 openim 来说是可选的,但是如果你想要自定义配置,可以参考下面的步骤:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make init
|
||||||
|
# 或者是使用脚本:
|
||||||
|
# ./scripts/init-config.sh
|
||||||
|
```
|
||||||
|
此时会帮你在 `deployments/openim/config` 目录下生成配置文件,你可以根据自己的需求进行修改。
|
||||||
|
|
||||||
### 容器化安装
|
### 容器化安装
|
||||||
|
|
||||||
|
23
deployments/openim-chat/.helmignore
Normal file
23
deployments/openim-chat/.helmignore
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
38
deployments/openim-chat/Chart.yaml
Normal file
38
deployments/openim-chat/Chart.yaml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
apiVersion: v2
|
||||||
|
name: openim-chat
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
22
deployments/openim-chat/templates/NOTES.txt
Normal file
22
deployments/openim-chat/templates/NOTES.txt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
{{- range .paths }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-chat.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-chat.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-chat.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-chat.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
62
deployments/openim-chat/templates/_helpers.tpl
Normal file
62
deployments/openim-chat/templates/_helpers.tpl
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-chat.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-chat.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-chat.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-chat.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "openim-chat.chart" . }}
|
||||||
|
{{ include "openim-chat.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-chat.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "openim-chat.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-chat.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "openim-chat.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
75
deployments/openim-chat/templates/deployment.yaml
Normal file
75
deployments/openim-chat/templates/deployment.yaml
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-chat.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-chat.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "openim-chat.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-chat.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "openim-chat.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
42
deployments/openim-chat/templates/hpa.yaml
Normal file
42
deployments/openim-chat/templates/hpa.yaml
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
{{- if .Values.autoscaling.enabled }}
|
||||||
|
apiVersion: autoscaling/v2beta1
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-chat.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-chat.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{ include "openim-chat.fullname" . }}
|
||||||
|
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||||
|
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||||
|
metrics:
|
||||||
|
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
75
deployments/openim-chat/templates/ingress.yaml
Normal file
75
deployments/openim-chat/templates/ingress.yaml
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
{{- $fullName := include "openim-chat.fullname" . -}}
|
||||||
|
{{- $svcPort := .Values.service.port -}}
|
||||||
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
|
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-chat.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ .path }}
|
||||||
|
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
pathType: {{ .pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend:
|
||||||
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $svcPort }}
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $svcPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
29
deployments/openim-chat/templates/service.yaml
Normal file
29
deployments/openim-chat/templates/service.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-chat.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-chat.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "openim-chat.selectorLabels" . | nindent 4 }}
|
26
deployments/openim-chat/templates/serviceaccount.yaml
Normal file
26
deployments/openim-chat/templates/serviceaccount.yaml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-chat.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-chat.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
96
deployments/openim-chat/values.yaml
Normal file
96
deployments/openim-chat/values.yaml
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Default values for openim-chat.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: nginx
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: true
|
||||||
|
# Annotations to add to the service account
|
||||||
|
annotations: {}
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: ""
|
||||||
|
annotations: {}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
autoscaling:
|
||||||
|
enabled: false
|
||||||
|
minReplicas: 1
|
||||||
|
maxReplicas: 100
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
# targetMemoryUtilizationPercentage: 80
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
23
deployments/openim-server/.helmignore
Normal file
23
deployments/openim-server/.helmignore
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
38
deployments/openim-server/Chart.yaml
Normal file
38
deployments/openim-server/Chart.yaml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
apiVersion: v2
|
||||||
|
name: openim-server
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
22
deployments/openim-server/templates/NOTES.txt
Normal file
22
deployments/openim-server/templates/NOTES.txt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
{{- range .paths }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-server.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-server.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-server.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-server.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
62
deployments/openim-server/templates/_helpers.tpl
Normal file
62
deployments/openim-server/templates/_helpers.tpl
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-server.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-server.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-server.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-server.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "openim-server.chart" . }}
|
||||||
|
{{ include "openim-server.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-server.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "openim-server.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-server.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "openim-server.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
75
deployments/openim-server/templates/deployment.yaml
Normal file
75
deployments/openim-server/templates/deployment.yaml
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-server.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-server.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "openim-server.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-server.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "openim-server.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
42
deployments/openim-server/templates/hpa.yaml
Normal file
42
deployments/openim-server/templates/hpa.yaml
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
{{- if .Values.autoscaling.enabled }}
|
||||||
|
apiVersion: autoscaling/v2beta1
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-server.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-server.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{ include "openim-server.fullname" . }}
|
||||||
|
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||||
|
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||||
|
metrics:
|
||||||
|
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
75
deployments/openim-server/templates/ingress.yaml
Normal file
75
deployments/openim-server/templates/ingress.yaml
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
{{- $fullName := include "openim-server.fullname" . -}}
|
||||||
|
{{- $svcPort := .Values.service.port -}}
|
||||||
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
|
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ .path }}
|
||||||
|
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
pathType: {{ .pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend:
|
||||||
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $svcPort }}
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $svcPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
29
deployments/openim-server/templates/service.yaml
Normal file
29
deployments/openim-server/templates/service.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-server.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-server.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "openim-server.selectorLabels" . | nindent 4 }}
|
26
deployments/openim-server/templates/serviceaccount.yaml
Normal file
26
deployments/openim-server/templates/serviceaccount.yaml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-server.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
96
deployments/openim-server/values.yaml
Normal file
96
deployments/openim-server/values.yaml
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Default values for openim-server.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: nginx
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: true
|
||||||
|
# Annotations to add to the service account
|
||||||
|
annotations: {}
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: ""
|
||||||
|
annotations: {}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
autoscaling:
|
||||||
|
enabled: false
|
||||||
|
minReplicas: 1
|
||||||
|
maxReplicas: 100
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
# targetMemoryUtilizationPercentage: 80
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
124
deployments/templates/chat.yaml
Normal file
124
deployments/templates/chat.yaml
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Configuration for OpenIMServer
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# TODO: This config file is the template file
|
||||||
|
# --| source: deployments/templates/chat.yaml
|
||||||
|
# --| env: scripts/install/environment
|
||||||
|
# --| target: config/config.yaml
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
|
||||||
|
###################### Zookeeper ######################
|
||||||
|
# Zookeeper configuration
|
||||||
|
# It's not recommended to modify the schema
|
||||||
|
zookeeper:
|
||||||
|
schema: ${ZOOKEEPER_SCHEMA}
|
||||||
|
zkAddr:
|
||||||
|
- ${ZOOKEEPER_ADDRESS}:${ZOOKEEPER_PORT}
|
||||||
|
username: ${ZOOKEEPER_USERNAME}
|
||||||
|
password: ${ZOOKEEPER_PASSWORD}
|
||||||
|
|
||||||
|
###################### Chat API ######################
|
||||||
|
chatApi:
|
||||||
|
openImChatApiPort: [ ${OPENIM_CHAT_API_PORT} ]
|
||||||
|
listenIP: ${CHAT_API_LISTEN_IP}
|
||||||
|
|
||||||
|
###################### Admin API ######################
|
||||||
|
adminApi:
|
||||||
|
openImAdminApiPort: [ ${OPENIM_ADMIN_API_PORT} ]
|
||||||
|
listenIP: ${ADMIN_API_LISTEN_IP}
|
||||||
|
|
||||||
|
###################### RPC ######################
|
||||||
|
rpc:
|
||||||
|
registerIP: #作为rpc启动时,注册到zookeeper的IP,api/gateway能访问到此ip和对应的rpcPort中的端口
|
||||||
|
listenIP: #默认为0.0.0.0
|
||||||
|
|
||||||
|
rpcPort:
|
||||||
|
openImAdminPort: [ ${OPENIM_ADMIN_PORT} ]
|
||||||
|
openImChatPort: [ ${OPENIM_CHAT_PORT} ]
|
||||||
|
rpcRegisterName:
|
||||||
|
openImAdminName: ${OPENIM_ADMIN_NAME}
|
||||||
|
openImChatName: ${OPENIM_CHAT_NAME}
|
||||||
|
|
||||||
|
###################### MySQL ######################
|
||||||
|
mysql:
|
||||||
|
# address: [ 127.0.0.1:13306 ] #目前仅支持单机
|
||||||
|
# username: root #用户名
|
||||||
|
# password: openIM123 #密码
|
||||||
|
# database: openIM_v2 #不建议修改
|
||||||
|
# maxOpenConn: 1000 #最大连接数
|
||||||
|
# maxIdleConn: 100 #最大空闲连接数
|
||||||
|
# maxLifeTime: 60 #连接可以重复使用的最长时间(秒)
|
||||||
|
# logLevel: 4 #日志级别 1=slient 2=error 3=warn 4=info
|
||||||
|
# slowThreshold: 500 #慢语句阈值 (毫秒)
|
||||||
|
database: openim_enterprise
|
||||||
|
|
||||||
|
###################### Log ######################
|
||||||
|
log:
|
||||||
|
storageLocation: ../logs/ #存放目录
|
||||||
|
# rotationTime: 24 #日志旋转时间
|
||||||
|
# remainRotationCount: 2 #日志数量
|
||||||
|
# remainLogLevel: 6 #日志级别 6表示全都打印,
|
||||||
|
# isStdout: false
|
||||||
|
# isJson: false
|
||||||
|
# withStack: false
|
||||||
|
|
||||||
|
###################### Secret & Token Policy ######################
|
||||||
|
# secret: openIM123
|
||||||
|
#tokenPolicy:
|
||||||
|
# expire: 86400
|
||||||
|
|
||||||
|
###################### Verify Code ######################
|
||||||
|
verifyCode:
|
||||||
|
validTime: 300 # 验证码有效时间
|
||||||
|
validCount: 5 # 验证码有效次数
|
||||||
|
uintTime: 86400 # 单位时间间隔
|
||||||
|
maxCount: 10 # 单位时间内最大获取次数
|
||||||
|
superCode: "666666" # 超级验证码(只有use为空时使用)
|
||||||
|
len: 6 # 验证码长度
|
||||||
|
use: "" # 使用的验证码服务(use: "ali")
|
||||||
|
ali:
|
||||||
|
endpoint: "dysmsapi.aliyuncs.com"
|
||||||
|
accessKeyId: ""
|
||||||
|
accessKeySecret: ""
|
||||||
|
signName: ""
|
||||||
|
verificationCodeTemplateCode: ""
|
||||||
|
|
||||||
|
|
||||||
|
###################### Proxy Header ######################
|
||||||
|
# 获取ip的header,没有配置直接获取远程地址
|
||||||
|
#proxyHeader: "X-Forwarded-For"
|
||||||
|
|
||||||
|
###################### Admin List ######################
|
||||||
|
adminList:
|
||||||
|
- adminID: admin1
|
||||||
|
nickname: chat1
|
||||||
|
imAdmin: openIM123456
|
||||||
|
- adminID: admin2
|
||||||
|
nickname: chat2
|
||||||
|
imAdmin: openIM654321
|
||||||
|
- adminID: admin3
|
||||||
|
nickname: chat3
|
||||||
|
imAdmin: openIMAdmin
|
||||||
|
|
||||||
|
###################### OpenIM URL ######################
|
||||||
|
openIMUrl: ${OPENIM_SERVER_ADDRESS}:${API_OPENIM_PORT}
|
||||||
|
|
||||||
|
###################### Redis ######################
|
||||||
|
redis:
|
||||||
|
# address: [ 127.0.0.1:16379 ]
|
||||||
|
# username:
|
||||||
|
# password: openIM123
|
@ -12,8 +12,268 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========= Basic Configuration ========
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# The user for authentication or system operations.
|
||||||
|
# Default: USER=root
|
||||||
USER=${USER}
|
USER=${USER}
|
||||||
|
|
||||||
|
# Password associated with the specified user for authentication.
|
||||||
|
# Default: PASSWORD=openIM123
|
||||||
PASSWORD=${PASSWORD}
|
PASSWORD=${PASSWORD}
|
||||||
|
|
||||||
|
# Endpoint for the MinIO object storage service.
|
||||||
|
# Default: MINIO_ENDPOINT=http://172.28.0.1:10005
|
||||||
MINIO_ENDPOINT=${MINIO_ENDPOINT}
|
MINIO_ENDPOINT=${MINIO_ENDPOINT}
|
||||||
|
|
||||||
|
# Base URL for the application programming interface (API).
|
||||||
|
# Default: API_URL=http://172.28.0.1:10002
|
||||||
API_URL=${API_URL}
|
API_URL=${API_URL}
|
||||||
DATA_DIR=${DATA_DIR}
|
|
||||||
|
# Directory path for storing data files or related information.
|
||||||
|
# Default: DATA_DIR=./
|
||||||
|
DATA_DIR=${DATA_DIR}
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========= Network Configuration ======
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Subnet for the Docker network.
|
||||||
|
# Default: DOCKER_BRIDGE_SUBNET=172.28.0.0/16
|
||||||
|
DOCKER_BRIDGE_SUBNET=${DOCKER_BRIDGE_SUBNET}
|
||||||
|
|
||||||
|
# Gateway for the Docker network.
|
||||||
|
# Default: DOCKER_BRIDGE_GATEWAY=172.28.0.1
|
||||||
|
DOCKER_BRIDGE_GATEWAY=${DOCKER_BRIDGE_GATEWAY}
|
||||||
|
|
||||||
|
# Address or hostname for the MySQL network.
|
||||||
|
# Default: MYSQL_NETWORK_ADDRESS=172.28.0.2
|
||||||
|
MYSQL_NETWORK_ADDRESS=${MYSQL_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the MongoDB network.
|
||||||
|
# Default: MONGO_NETWORK_ADDRESS=172.28.0.3
|
||||||
|
MONGO_NETWORK_ADDRESS=${MONGO_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the Redis network.
|
||||||
|
# Default: REDIS_NETWORK_ADDRESS=172.28.0.4
|
||||||
|
REDIS_NETWORK_ADDRESS=${REDIS_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the Kafka network.
|
||||||
|
# Default: KAFKA_NETWORK_ADDRESS=172.28.0.5
|
||||||
|
KAFKA_NETWORK_ADDRESS=${KAFKA_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the ZooKeeper network.
|
||||||
|
# Default: ZOOKEEPER_NETWORK_ADDRESS=172.28.0.6
|
||||||
|
ZOOKEEPER_NETWORK_ADDRESS=${ZOOKEEPER_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the MinIO network.
|
||||||
|
# Default: MINIO_NETWORK_ADDRESS=172.28.0.7
|
||||||
|
MINIO_NETWORK_ADDRESS=${MINIO_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM web network.
|
||||||
|
# Default: OPENIM_WEB_NETWORK_ADDRESS=172.28.0.8
|
||||||
|
OPENIM_WEB_NETWORK_ADDRESS=${OPENIM_WEB_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM server network.
|
||||||
|
# Default: OPENIM_SERVER_NETWORK_ADDRESS=172.28.0.9
|
||||||
|
OPENIM_SERVER_NETWORK_ADDRESS=${OPENIM_SERVER_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM chat network.
|
||||||
|
# Default: OPENIM_CHAT_NETWORK_ADDRESS=172.28.0.10
|
||||||
|
OPENIM_CHAT_NETWORK_ADDRESS=${OPENIM_CHAT_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the Prometheus network.
|
||||||
|
# Default: PROMETHEUS_NETWORK_ADDRESS=172.28.0.11
|
||||||
|
PROMETHEUS_NETWORK_ADDRESS=${PROMETHEUS_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Address or hostname for the Grafana network.
|
||||||
|
# Default: GRAFANA_NETWORK_ADDRESS=172.28.0.12
|
||||||
|
GRAFANA_NETWORK_ADDRESS=${GRAFANA_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
|
||||||
|
# ===============================================
|
||||||
|
# = Component Extension Configuration =
|
||||||
|
# ===============================================
|
||||||
|
|
||||||
|
# ============ Component Extension Configuration ==========
|
||||||
|
# ----- ZooKeeper Configuration -----
|
||||||
|
# Address or hostname for the ZooKeeper service.
|
||||||
|
# Default: ZOOKEEPER_ADDRESS=172.28.0.1
|
||||||
|
ZOOKEEPER_ADDRESS=${ZOOKEEPER_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port for ZooKeeper service.
|
||||||
|
# Default: ZOOKEEPER_PORT=12181
|
||||||
|
ZOOKEEPER_PORT=${ZOOKEEPER_PORT}
|
||||||
|
|
||||||
|
# ----- MySQL Configuration -----
|
||||||
|
|
||||||
|
# Address or hostname for the MySQL service.
|
||||||
|
# Default: MYSQL_ADDRESS=172.28.0.1
|
||||||
|
MYSQL_ADDRESS=${MYSQL_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port on which MySQL database service is running.
|
||||||
|
# Default: MYSQL_PORT=13306
|
||||||
|
MYSQL_PORT=${MYSQL_PORT}
|
||||||
|
|
||||||
|
# Password to authenticate with the MySQL database service.
|
||||||
|
# Default: MYSQL_PASSWORD=openIM123
|
||||||
|
MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
||||||
|
|
||||||
|
# ----- MongoDB Configuration -----
|
||||||
|
# Address or hostname for the MongoDB service.
|
||||||
|
# Default: MONGO_ADDRESS=172.28.0.1
|
||||||
|
MONGO_ADDRESS=${MONGO_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port on which MongoDB service is running.
|
||||||
|
# Default: MONGO_PORT=37017
|
||||||
|
MONGO_PORT=${MONGO_PORT}
|
||||||
|
|
||||||
|
# Username to authenticate with the MongoDB service.
|
||||||
|
# Default: MONGO_USERNAME=root
|
||||||
|
MONGO_USERNAME=${MONGO_USERNAME}
|
||||||
|
|
||||||
|
# Password to authenticate with the MongoDB service.
|
||||||
|
# Default: MONGO_PASSWORD=openIM123
|
||||||
|
MONGO_PASSWORD=${MONGO_PASSWORD}
|
||||||
|
|
||||||
|
# Name of the database in MongoDB to be used.
|
||||||
|
# Default: MONGO_DATABASE=openIM_v3
|
||||||
|
MONGO_DATABASE=${MONGO_DATABASE}
|
||||||
|
|
||||||
|
# ----- Redis Configuration -----
|
||||||
|
# Address or hostname for the Redis service.
|
||||||
|
# Default: REDIS_ADDRESS=172.28.0.1
|
||||||
|
REDIS_ADDRESS=${REDIS_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port on which Redis in-memory data structure store is running.
|
||||||
|
# Default: REDIS_PORT=16379
|
||||||
|
REDIS_PORT=${REDIS_PORT}
|
||||||
|
|
||||||
|
# Password to authenticate with the Redis service.
|
||||||
|
# Default: REDIS_PASSWORD=openIM123
|
||||||
|
REDIS_PASSWORD=${REDIS_PASSWORD}
|
||||||
|
|
||||||
|
# ----- Kafka Configuration -----
|
||||||
|
# Address or hostname for the Kafka service.
|
||||||
|
# Default: KAFKA_ADDRESS=172.28.0.1
|
||||||
|
KAFKA_ADDRESS=${KAFKA_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port on which Kafka distributed streaming platform is running.
|
||||||
|
# Default: KAFKA_PORT=19092
|
||||||
|
KAFKA_PORT=${KAFKA_PORT}
|
||||||
|
|
||||||
|
# Topic in Kafka for storing the latest messages in Redis.
|
||||||
|
# Default: KAFKA_LATESTMSG_REDIS_TOPIC=latestMsgToRedis
|
||||||
|
KAFKA_LATESTMSG_REDIS_TOPIC=${KAFKA_LATESTMSG_REDIS_TOPIC}
|
||||||
|
|
||||||
|
# Topic in Kafka for pushing messages (e.g. notifications or updates).
|
||||||
|
# Default: KAFKA_MSG_PUSH_TOPIC=msgToPush
|
||||||
|
KAFKA_MSG_PUSH_TOPIC=${KAFKA_MSG_PUSH_TOPIC}
|
||||||
|
|
||||||
|
# Topic in Kafka for storing offline messages in MongoDB.
|
||||||
|
# Default: KAFKA_OFFLINEMSG_MONGO_TOPIC=offlineMsgToMongoMysql
|
||||||
|
KAFKA_OFFLINEMSG_MONGO_TOPIC=${KAFKA_OFFLINEMSG_MONGO_TOPIC}
|
||||||
|
|
||||||
|
# ----- MinIO Configuration ----
|
||||||
|
# Address or hostname for the MinIO object storage service.
|
||||||
|
# Default: MINIO_ADDRESS=172.28.0.1
|
||||||
|
MINIO_ADDRESS=${MINIO_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port on which MinIO object storage service is running.
|
||||||
|
# Default: MINIO_PORT=10005
|
||||||
|
MINIO_PORT=${MINIO_PORT}
|
||||||
|
|
||||||
|
# Access key to authenticate with the MinIO service.
|
||||||
|
# Default: MINIO_ACCESS_KEY=root
|
||||||
|
MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
|
||||||
|
|
||||||
|
# Secret key corresponding to the access key for MinIO authentication.
|
||||||
|
# Default: MINIO_SECRET_KEY=openIM123
|
||||||
|
MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
|
||||||
|
|
||||||
|
# ----- Prometheus Configuration -----
|
||||||
|
# Address or hostname for the Prometheus service.
|
||||||
|
# Default: PROMETHEUS_ADDRESS=172.28.0.1
|
||||||
|
PROMETHEUS_ADDRESS=${PROMETHEUS_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port on which Prometheus service is running.
|
||||||
|
# Default: PROMETHEUS_PORT=19090
|
||||||
|
PROMETHEUS_PORT=${PROMETHEUS_PORT}
|
||||||
|
|
||||||
|
# ----- Grafana Configuration -----
|
||||||
|
# Address or hostname for the Grafana service.
|
||||||
|
# Default: GRAFANA_ADDRESS=172.28.0.1
|
||||||
|
GRAFANA_ADDRESS=${GRAFANA_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port on which Grafana service is running.
|
||||||
|
# Default: GRAFANA_PORT=3000
|
||||||
|
GRAFANA_PORT=${GRAFANA_PORT}
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ============ OpenIM Web ===============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Path to the OpenIM web distribution.
|
||||||
|
# Default: OPENIM_WEB_DIST_PATH=/app/dist
|
||||||
|
OPENIM_WEB_DIST_PATH=${OPENIM_WEB_DIST_PATH}
|
||||||
|
|
||||||
|
# Port on which OpenIM web service is running.
|
||||||
|
# Default: OPENIM_WEB_PORT=11001
|
||||||
|
OPENIM_WEB_PORT=${OPENIM_WEB_PORT}
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM web service.
|
||||||
|
# Default: OPENIM_WEB_ADDRESS=172.28.0.1
|
||||||
|
OPENIM_WEB_ADDRESS=${OPENIM_WEB_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========= OpenIM Server ==============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM server.
|
||||||
|
# Default: OPENIM_SERVER_ADDRESS=172.28.0.1
|
||||||
|
OPENIM_SERVER_ADDRESS=${OPENIM_SERVER_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port for the OpenIM WebSockets.
|
||||||
|
# Default: OPENIM_WS_PORT=10001
|
||||||
|
OPENIM_WS_PORT=${OPENIM_WS_PORT}
|
||||||
|
|
||||||
|
# Port for the OpenIM API.
|
||||||
|
# Default: API_OPENIM_PORT=10002
|
||||||
|
API_OPENIM_PORT=${API_OPENIM_PORT}
|
||||||
|
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========== OpenIM Chat ===============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Branch name for OpenIM chat.
|
||||||
|
# Default: CHAT_BRANCH=main
|
||||||
|
CHAT_BRANCH=${CHAT_BRANCH}
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM chat service.
|
||||||
|
# Default: OPENIM_CHAT_ADDRESS=172.28.0.1
|
||||||
|
OPENIM_CHAT_ADDRESS=${OPENIM_CHAT_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# Port for the OpenIM chat API.
|
||||||
|
# Default: OPENIM_CHAT_API_PORT=10008
|
||||||
|
OPENIM_CHAT_API_PORT=${OPENIM_CHAT_API_PORT}
|
||||||
|
|
||||||
|
# Directory path for storing data files or related information for OpenIM chat.
|
||||||
|
# Default: OPENIM_CHAT_DATA_DIR=./openim-chat/main
|
||||||
|
OPENIM_CHAT_DATA_DIR=${OPENIM_CHAT_DATA_DIR}
|
||||||
|
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========== OpenIM Admin ==============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Branch name for OpenIM server.
|
||||||
|
# Default: SERVER_BRANCH=main
|
||||||
|
SERVER_BRANCH=${SERVER_BRANCH}
|
||||||
|
|
||||||
|
# Port for the OpenIM admin API.
|
||||||
|
# Default: OPENIM_ADMIN_API_PORT=10009
|
||||||
|
OPENIM_ADMIN_API_PORT=${OPENIM_ADMIN_API_PORT}
|
||||||
|
@ -144,7 +144,7 @@ source ./environment.sh
|
|||||||
cat > openim-api.service.template <<EOF
|
cat > openim-api.service.template <<EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=OpenIM Server API
|
Description=OpenIM Server API
|
||||||
Documentation=https://github.com/marmotedu/iam/blob/master/init/README.md
|
Documentation=https://github.com/oepnimsdk/open-im-server/blob/master/init/README.md
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
WorkingDirectory=${OPENIM_DATA_DIR}/openim-api
|
WorkingDirectory=${OPENIM_DATA_DIR}/openim-api
|
||||||
@ -179,7 +179,7 @@ do
|
|||||||
cat > $service.service.template <<EOF
|
cat > $service.service.template <<EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=OpenIM Server - $service
|
Description=OpenIM Server - $service
|
||||||
Documentation=https://github.com/marmotedu/iam/blob/master/init/README.md
|
Documentation=https://github.com/oepnimsdk/open-im-server/blob/master/init/README.md
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
WorkingDirectory=${OPENIM_DATA_DIR}/$service
|
WorkingDirectory=${OPENIM_DATA_DIR}/$service
|
||||||
|
@ -86,7 +86,7 @@ redis:
|
|||||||
kafka:
|
kafka:
|
||||||
username: ${KAFKA_USERNAME}
|
username: ${KAFKA_USERNAME}
|
||||||
password: ${KAFKA_PASSWORD}
|
password: ${KAFKA_PASSWORD}
|
||||||
addr: [ ${KAFKA_ADDR}:${KAFKA_PORT} ]
|
addr: [ ${KAFKA_ADDRESS}:${KAFKA_PORT} ]
|
||||||
latestMsgToRedis:
|
latestMsgToRedis:
|
||||||
topic: "${KAFKA_LATESTMSG_REDIS_TOPIC}"
|
topic: "${KAFKA_LATESTMSG_REDIS_TOPIC}"
|
||||||
offlineMsgToMongo:
|
offlineMsgToMongo:
|
||||||
|
@ -1,188 +0,0 @@
|
|||||||
#fixme Clone openIM Server project before using docker-compose,project address:https://github.com/OpenIMSDK/Open-IM-Server.git
|
|
||||||
version: "3"
|
|
||||||
services:
|
|
||||||
mysql:
|
|
||||||
image: mysql:5.7
|
|
||||||
ports:
|
|
||||||
- 13306:3306
|
|
||||||
- 23306:33060
|
|
||||||
container_name: mysql
|
|
||||||
volumes:
|
|
||||||
- ${DATA_DIR}/components/mysql/data:/var/lib/mysql
|
|
||||||
- /etc/localtime:/etc/localtime
|
|
||||||
environment:
|
|
||||||
MYSQL_ROOT_PASSWORD: ${PASSWORD}
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
mongodb:
|
|
||||||
image: mongo:6.0.2
|
|
||||||
ports:
|
|
||||||
- 37017:27017
|
|
||||||
container_name: mongo
|
|
||||||
command: --wiredTigerCacheSizeGB 1 --auth
|
|
||||||
volumes:
|
|
||||||
- ${DATA_DIR}/components/mongodb/data/db:/data/db
|
|
||||||
- ${DATA_DIR}/components/mongodb/data/logs:/data/logs
|
|
||||||
- ${DATA_DIR}/components/mongodb/data/conf:/etc/mongo
|
|
||||||
- ./scripts/mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh:ro
|
|
||||||
environment:
|
|
||||||
- TZ=Asia/Shanghai
|
|
||||||
# cache
|
|
||||||
- wiredTigerCacheSizeGB=1
|
|
||||||
- MONGO_INITDB_ROOT_USERNAME=${USER}
|
|
||||||
- MONGO_INITDB_ROOT_PASSWORD=${PASSWORD}
|
|
||||||
- MONGO_INITDB_DATABASE=openIM
|
|
||||||
- MONGO_USERNAME=${USER}
|
|
||||||
- MONGO_PASSWORD=${PASSWORD}
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:7.0.0
|
|
||||||
ports:
|
|
||||||
- 16379:6379
|
|
||||||
container_name: redis
|
|
||||||
volumes:
|
|
||||||
- ${DATA_DIR}/components/redis/data:/data
|
|
||||||
#redis config file
|
|
||||||
- ${DATA_DIR}/components/redis/config/redis.conf:/usr/local/redis/config/redis.conf
|
|
||||||
environment:
|
|
||||||
TZ: Asia/Shanghai
|
|
||||||
restart: always
|
|
||||||
sysctls:
|
|
||||||
net.core.somaxconn: 1024
|
|
||||||
command: redis-server --requirepass ${PASSWORD} --appendonly yes
|
|
||||||
|
|
||||||
zookeeper:
|
|
||||||
image: wurstmeister/zookeeper
|
|
||||||
ports:
|
|
||||||
- 2181:2181
|
|
||||||
container_name: zookeeper
|
|
||||||
volumes:
|
|
||||||
- /etc/localtime:/etc/localtime
|
|
||||||
environment:
|
|
||||||
TZ: Asia/Shanghai
|
|
||||||
restart: always
|
|
||||||
network_mode: "host"
|
|
||||||
|
|
||||||
kafka:
|
|
||||||
image: wurstmeister/kafka
|
|
||||||
container_name: kafka
|
|
||||||
restart: always
|
|
||||||
ports:
|
|
||||||
- 9092:9092
|
|
||||||
environment:
|
|
||||||
TZ: Asia/Shanghai
|
|
||||||
KAFKA_BROKER_ID: 0
|
|
||||||
KAFKA_ZOOKEEPER_CONNECT: 127.0.0.1:2181
|
|
||||||
KAFKA_CREATE_TOPICS: "latestMsgToRedis:8:1,msgToPush:8:1,offlineMsgToMongoMysql:8:1"
|
|
||||||
KAFKA_ADVERTISED_LISTENERS: INSIDE://127.0.0.1:9092,OUTSIDE://103.116.45.174:9092
|
|
||||||
KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093
|
|
||||||
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT"
|
|
||||||
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
|
|
||||||
depends_on:
|
|
||||||
- zookeeper
|
|
||||||
network_mode: "host"
|
|
||||||
|
|
||||||
minio:
|
|
||||||
image: minio/minio
|
|
||||||
ports:
|
|
||||||
- 10005:9000
|
|
||||||
- 9090:9090
|
|
||||||
container_name: minio
|
|
||||||
volumes:
|
|
||||||
- ${DATA_DIR}/components/mnt/data:/data
|
|
||||||
- ${DATA_DIR}/components/mnt/config:/root/.minio
|
|
||||||
environment:
|
|
||||||
MINIO_ROOT_USER: ${USER}
|
|
||||||
MINIO_ROOT_PASSWORD: ${PASSWORD}
|
|
||||||
restart: always
|
|
||||||
command: minio server /data --console-address ':9090'
|
|
||||||
|
|
||||||
openim-server:
|
|
||||||
image: ghcr.io/openimsdk/openim-server:main
|
|
||||||
# image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-server:main
|
|
||||||
# image: openim/openim-server:main
|
|
||||||
container_name: openim-server
|
|
||||||
# healthcheck:
|
|
||||||
# test: ["CMD-SHELL", "./scripts/check-all.sh"]
|
|
||||||
# interval: 30s
|
|
||||||
# timeout: 10s
|
|
||||||
# retries: 5
|
|
||||||
volumes:
|
|
||||||
- ./logs:/openim/openim-server/logs
|
|
||||||
- ./config:/openim/openim-server/config
|
|
||||||
- ./scripts:/openim/openim-server/scripts
|
|
||||||
restart: always
|
|
||||||
depends_on:
|
|
||||||
- zookeeper
|
|
||||||
- kafka
|
|
||||||
- mysql
|
|
||||||
- mongodb
|
|
||||||
- redis
|
|
||||||
- minio
|
|
||||||
network_mode: "host"
|
|
||||||
logging:
|
|
||||||
driver: json-file
|
|
||||||
options:
|
|
||||||
max-size: "1g"
|
|
||||||
max-file: "2"
|
|
||||||
|
|
||||||
# openim-chat:
|
|
||||||
# # image: ghcr.io/openimsdk/openim-server:release-v1.2
|
|
||||||
# image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-server:release-v1.2
|
|
||||||
# # image: openim/openim-server:release-v1.2
|
|
||||||
# container_name: openim-chat
|
|
||||||
# # healthcheck:
|
|
||||||
# # test: ["CMD-SHELL", "./scripts/check-all.sh"]
|
|
||||||
# # interval: 30s
|
|
||||||
# # timeout: 10s
|
|
||||||
# # retries: 5
|
|
||||||
# volumes:
|
|
||||||
# - openim-chat_logs:/openim/openim-chat/logs
|
|
||||||
# - openim-chat_config:/openim/openim-chat/config
|
|
||||||
# - openim-chat_scripts:/openim/openim-chat/scripts
|
|
||||||
# restart: always
|
|
||||||
# user: root:root
|
|
||||||
# depends_on:
|
|
||||||
# - mysql
|
|
||||||
# - mongodb
|
|
||||||
# - redis
|
|
||||||
# - minio
|
|
||||||
# - openim-server
|
|
||||||
# network_mode: "host"
|
|
||||||
# logging:
|
|
||||||
# driver: json-file
|
|
||||||
# options:
|
|
||||||
# max-size: "1g"
|
|
||||||
# max-file: "2"
|
|
||||||
|
|
||||||
prometheus:
|
|
||||||
image: prom/prometheus
|
|
||||||
volumes:
|
|
||||||
- ./.docker-compose_cfg/prometheus-compose.yml:/etc/prometheus/prometheus.yml
|
|
||||||
container_name: prometheus
|
|
||||||
# ports:
|
|
||||||
# - 9091:9091
|
|
||||||
depends_on:
|
|
||||||
- openim-server
|
|
||||||
command: --web.listen-address=:9091 --config.file="/etc/prometheus/prometheus.yml"
|
|
||||||
network_mode: "host"
|
|
||||||
|
|
||||||
grafana:
|
|
||||||
image: grafana/grafana
|
|
||||||
volumes:
|
|
||||||
- ./.docker-compose_cfg/datasource-compose.yaml:/etc/grafana/provisioning/datasources/datasource.yaml
|
|
||||||
- ./.docker-compose_cfg/grafana.ini:/etc/grafana/grafana.ini
|
|
||||||
- ./.docker-compose_cfg/node-exporter-full_rev1.json:/var/lib/grafana/dashboards/node-exporter-full_rev1.json
|
|
||||||
container_name: grafana
|
|
||||||
depends_on:
|
|
||||||
- prometheus
|
|
||||||
network_mode: "host"
|
|
||||||
|
|
||||||
|
|
||||||
# node-exporter:
|
|
||||||
# image: quay.io/prometheus/node-exporter
|
|
||||||
# container_name: node-exporter
|
|
||||||
# restart: always
|
|
||||||
# ports:
|
|
||||||
# - "9100:9100"
|
|
267
docker-compose.yml
Normal file
267
docker-compose.yml
Normal file
@ -0,0 +1,267 @@
|
|||||||
|
#fixme Clone openIM Server project before using docker-compose,project address:https://github.com/OpenIMSDK/Open-IM-Server.git
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
networks:
|
||||||
|
server:
|
||||||
|
driver: bridge
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: '${DOCKER_BRIDGE_SUBNET}'
|
||||||
|
gateway: '${DOCKER_BRIDGE_GATEWAY}'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql_data:
|
||||||
|
mongodb_data:
|
||||||
|
mongodb_logs:
|
||||||
|
mongodb_config:
|
||||||
|
redis_data:
|
||||||
|
redis_config:
|
||||||
|
kafka_data:
|
||||||
|
minio_data:
|
||||||
|
minio_config:
|
||||||
|
openim_server_logs:
|
||||||
|
openim_server_output:
|
||||||
|
openim_server_config:
|
||||||
|
openim_server_scripts:
|
||||||
|
openim_chat_logs:
|
||||||
|
openim_chat_output:
|
||||||
|
openim_chat_config:
|
||||||
|
openim_chat_scripts:
|
||||||
|
openim_server_prometheus_config:
|
||||||
|
openim_server_grafana_datasource:
|
||||||
|
openim_server_grafana_config:
|
||||||
|
openim_server_grafana_dashboard:
|
||||||
|
|
||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: mysql:5.7
|
||||||
|
ports:
|
||||||
|
- "${MYSQL_PORT}:3306"
|
||||||
|
container_name: mysql
|
||||||
|
volumes:
|
||||||
|
- mysql_data:/var/lib/mysql
|
||||||
|
- "/etc/localtime:/etc/localtime"
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}"
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
server:
|
||||||
|
ipv4_address: ${MYSQL_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
mongodb:
|
||||||
|
image: mongo:6.0.2
|
||||||
|
ports:
|
||||||
|
- "${MONGO_PORT}:27017"
|
||||||
|
container_name: mongo
|
||||||
|
command: --wiredTigerCacheSizeGB 1 --auth
|
||||||
|
volumes:
|
||||||
|
- mongodb_data:/data/db
|
||||||
|
- mongodb_logs:/data/logs
|
||||||
|
- mongodb_config:/etc/mongo
|
||||||
|
- "./scripts/mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh:ro"
|
||||||
|
environment:
|
||||||
|
- TZ=Asia/Shanghai
|
||||||
|
- wiredTigerCacheSizeGB=1
|
||||||
|
- MONGO_INITDB_ROOT_USERNAME=${MONGO_USERNAME}
|
||||||
|
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD}
|
||||||
|
- MONGO_INITDB_DATABASE=${MONGO_DATABASE}
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
server:
|
||||||
|
ipv4_address: ${MONGO_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:7.0.0
|
||||||
|
container_name: redis
|
||||||
|
ports:
|
||||||
|
- "${REDIS_PORT}:6379"
|
||||||
|
volumes:
|
||||||
|
- redis_data:/data
|
||||||
|
- redis_config:/usr/local/redis/config/redis.conf
|
||||||
|
environment:
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
restart: always
|
||||||
|
sysctls:
|
||||||
|
net.core.somaxconn: 1024
|
||||||
|
command: redis-server --requirepass ${REDIS_PASSWORD} --appendonly yes
|
||||||
|
networks:
|
||||||
|
server:
|
||||||
|
ipv4_address: ${REDIS_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
zookeeper:
|
||||||
|
image: bitnami/zookeeper:3.8
|
||||||
|
container_name: zookeeper
|
||||||
|
ports:
|
||||||
|
- "${ZOOKEEPER_PORT}:2181"
|
||||||
|
volumes:
|
||||||
|
- "/etc/localtime:/etc/localtime"
|
||||||
|
environment:
|
||||||
|
- ALLOW_ANONYMOUS_LOGIN=yes
|
||||||
|
- TZ="Asia/Shanghai"
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
server:
|
||||||
|
ipv4_address: ${ZOOKEEPER_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
kafka:
|
||||||
|
image: 'bitnami/kafka:3.5.1'
|
||||||
|
container_name: kafka
|
||||||
|
user: root
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "${KAFKA_PORT}:9094"
|
||||||
|
volumes:
|
||||||
|
- ./scripts/create_topic.sh:/opt/bitnami/kafka/create_topic.sh
|
||||||
|
- ${DATA_DIR}/components/kafka:/bitnami/kafka
|
||||||
|
command: >
|
||||||
|
bash -c "
|
||||||
|
/opt/bitnami/scripts/kafka/run.sh & sleep 5; /opt/bitnami/kafka/create_topic.sh; wait
|
||||||
|
"
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
environment:
|
||||||
|
- TZ=Asia/Shanghai
|
||||||
|
- KAFKA_CFG_NODE_ID=0
|
||||||
|
- KAFKA_CFG_PROCESS_ROLES=controller,broker
|
||||||
|
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@<your_host>:9093
|
||||||
|
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
|
||||||
|
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://${DOCKER_BRIDGE_GATEWAY}:${KAFKA_PORT}
|
||||||
|
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
|
||||||
|
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
|
||||||
|
networks:
|
||||||
|
server:
|
||||||
|
ipv4_address: ${KAFKA_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
minio:
|
||||||
|
image: minio/minio
|
||||||
|
ports:
|
||||||
|
- "${MINIO_PORT}:9000"
|
||||||
|
- "9090:9090"
|
||||||
|
container_name: minio
|
||||||
|
volumes:
|
||||||
|
- minio_data:/data
|
||||||
|
- minio_config:/root/.minio
|
||||||
|
environment:
|
||||||
|
MINIO_ROOT_USER: "${MINIO_ACCESS_KEY}"
|
||||||
|
MINIO_ROOT_PASSWORD: "${MINIO_SECRET_KEY}"
|
||||||
|
restart: always
|
||||||
|
command: minio server /data --console-address ':9090'
|
||||||
|
networks:
|
||||||
|
server:
|
||||||
|
ipv4_address: ${MINIO_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
openim-web:
|
||||||
|
image: ghcr.io/openimsdk/openim-web:latest
|
||||||
|
container_name: openim-web
|
||||||
|
environment:
|
||||||
|
- OPENIM_WEB_DIST_PATH=${OPENIM_WEB_DIST_PATH}
|
||||||
|
- OPENIM_WEB_PORT=${OPENIM_WEB_PORT}
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "${OPENIM_WEB_PORT}:11001"
|
||||||
|
networks:
|
||||||
|
server:
|
||||||
|
ipv4_address: ${OPENIM_WEB_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
openim-server:
|
||||||
|
# image: ghcr.io/openimsdk/openim-server:main
|
||||||
|
image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-server:main
|
||||||
|
# image: openim/openim-server:main
|
||||||
|
# build: .
|
||||||
|
container_name: openim-server
|
||||||
|
ports:
|
||||||
|
- ${OPENIM_WS_PORT}:10001
|
||||||
|
- ${API_OPENIM_PORT}:10002
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "/openim/openim-server/scripts/check-all.sh"]
|
||||||
|
interval: 300s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
volumes:
|
||||||
|
- ./logs:/openim/openim-server/logs
|
||||||
|
- ./_output:/openim/openim-server/_output
|
||||||
|
- ./config:/openim/openim-server/config
|
||||||
|
- ./scripts:/openim/openim-server/scripts
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- kafka
|
||||||
|
- mysql
|
||||||
|
- mongodb
|
||||||
|
- redis
|
||||||
|
- minio
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: "1g"
|
||||||
|
max-file: "2"
|
||||||
|
networks:
|
||||||
|
server:
|
||||||
|
ipv4_address: ${OPENIM_SERVER_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# openim-chat:
|
||||||
|
# # image: ghcr.io/openimsdk/openim-chat:main
|
||||||
|
# image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-chat:main
|
||||||
|
# # image: ghcr.io/openimsdk/openim-chat:main
|
||||||
|
# container_name: openim-chat
|
||||||
|
# healthcheck:
|
||||||
|
# test: ["CMD", "/openim/openim-chat/scripts/check_all.sh"]
|
||||||
|
# interval: 300s
|
||||||
|
# timeout: 10s
|
||||||
|
# retries: 5
|
||||||
|
# ports:
|
||||||
|
# - ${OPENIM_CHAT_API_PORT}:10008
|
||||||
|
# - ${OPENIM_ADMIN_API_PORT}:10009
|
||||||
|
# volumes:
|
||||||
|
# - openim_chat_logs:/openim/openim-chat/logs
|
||||||
|
# - openim_chat_output:/openim/openim-chat/_output
|
||||||
|
# - openim_chat_config:/openim/openim-chat/config
|
||||||
|
# - openim_chat_scripts:/openim/openim-chat/scripts
|
||||||
|
# restart: always
|
||||||
|
# user: root:root
|
||||||
|
# depends_on:
|
||||||
|
# - mysql
|
||||||
|
# - mongodb
|
||||||
|
# - redis
|
||||||
|
# - minio
|
||||||
|
# - server
|
||||||
|
# logging:
|
||||||
|
# driver: json-file
|
||||||
|
# options:
|
||||||
|
# max-size: "1g"
|
||||||
|
# max-file: "2"
|
||||||
|
# networks:
|
||||||
|
# server:
|
||||||
|
# ipv4_address: ${OPENIM_CHAT_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# prometheus:
|
||||||
|
# image: prom/prometheus
|
||||||
|
# volumes:
|
||||||
|
# - openim_server_prometheus_config:/etc/prometheus
|
||||||
|
# container_name: prometheus
|
||||||
|
# ports:
|
||||||
|
# - ${PROMETHEUS_PORT}:9091
|
||||||
|
# command: --web.listen-address=:9091 --config.file="/etc/prometheus"
|
||||||
|
# networks:
|
||||||
|
# server:
|
||||||
|
# ipv4_address: ${PROMETHEUS_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# grafana:
|
||||||
|
# image: grafana/grafana
|
||||||
|
# volumes:
|
||||||
|
# - openim_server_grafana_datasource:/etc/grafana/provisioning/datasources
|
||||||
|
# - openim_server_grafana_config:/etc/grafana
|
||||||
|
# - openim_server_grafana_dashboard:/var/lib/grafana/dashboards
|
||||||
|
# container_name: grafana
|
||||||
|
# ports:
|
||||||
|
# - ${GRAFANA_PORT}:3000
|
||||||
|
# networks:
|
||||||
|
# server:
|
||||||
|
# ipv4_address: ${GRAFANA_NETWORK_ADDRESS}
|
||||||
|
|
||||||
|
# node-exporter:
|
||||||
|
# image: quay.io/prometheus/node-exporter
|
||||||
|
# container_name: node-exporter
|
||||||
|
# restart: always
|
||||||
|
# ports:
|
||||||
|
# - "9100:9100"
|
67
docs/README.md
Normal file
67
docs/README.md
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
# OpenIM Server Docs
|
||||||
|
|
||||||
|
Welcome to the OpenIM Documentation hub! This center provides a comprehensive range of guides and manuals designed to help you get the most out of your OpenIM experience.
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
1. [Contrib](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib) - Guidance on contributing and configurations for developers
|
||||||
|
2. [Conversions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions) - Coding conventions, logging policies, and other transformation tools
|
||||||
|
|
||||||
|
------
|
||||||
|
|
||||||
|
## Contrib
|
||||||
|
|
||||||
|
This section offers developers a detailed guide on how to contribute code, set up their environment, and follow the associated processes.
|
||||||
|
|
||||||
|
- [Code Conventions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/code_conventions.md) - Rules and conventions for writing code in OpenIM.
|
||||||
|
- [Development Guide](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/development.md) - A guide on how to carry out development within OpenIM.
|
||||||
|
- [Git Cherry Pick](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/git_cherry-pick.md) - Guidelines on cherry-picking operations.
|
||||||
|
- [Git Workflow](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/git_workflow.md) - The git workflow in OpenIM.
|
||||||
|
- [Initialization Configurations](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/init_config.md) - Guidance on setting up and initializing OpenIM.
|
||||||
|
- [Docker Installation](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/install_docker.md) - How to install Docker on your machine.
|
||||||
|
- [Linux Development Environment](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/linux_development.md) - Guide to set up the development environment on Linux.
|
||||||
|
- [Local Actions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/local_actions.md) - Guidelines on how to carry out certain common actions locally.
|
||||||
|
- [Offline Deployment](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/offline-deployment.md) - Methods of deploying OpenIM offline.
|
||||||
|
- [Protoc Tools](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/protoc_tools.md) - Guide on using protoc tools.
|
||||||
|
- [Go Tools](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/util_go.md) - Tools and libraries in OpenIM for Go.
|
||||||
|
- [Makefile Tools](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/util_makefile.md) - Best practices and tools for Makefile.
|
||||||
|
- [Script Tools](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/util_scripts.md) - Best practices and tools for scripts.
|
||||||
|
|
||||||
|
## Conversions
|
||||||
|
|
||||||
|
This section introduces various conventions and policies within OpenIM, encompassing code, logs, versions, and more.
|
||||||
|
|
||||||
|
- [API Conversions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/api.md) - Guidelines and methods for API conversions.
|
||||||
|
- [Logging Policy](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/bash_log.md) - Logging policies and conventions in OpenIM.
|
||||||
|
- [CI/CD Actions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/cicd_actions.md) - Procedures and conventions for CI/CD.
|
||||||
|
- [Commit Conventions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/commit.md) - Conventions for code commits in OpenIM.
|
||||||
|
- [Directory Conventions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/directory.md) - Directory structure and conventions within OpenIM.
|
||||||
|
- [Error Codes](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/error_code.md) - List and descriptions of error codes.
|
||||||
|
- [Go Code Conversions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/go_code.md) - Conventions and conversions for Go code.
|
||||||
|
- [Docker Image Strategy](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/images.md) - Management strategies for OpenIM Docker images, spanning multiple architectures and image repositories.
|
||||||
|
- [Logging Conventions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/logging.md) - Further detailed conventions on logging.
|
||||||
|
- [Version Conventions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/version.md) - Naming and management strategies for OpenIM versions.
|
||||||
|
|
||||||
|
|
||||||
|
## For Developers, Contributors, and Community Maintainers
|
||||||
|
|
||||||
|
### Developers & Contributors
|
||||||
|
|
||||||
|
If you're a developer or someone keen on contributing:
|
||||||
|
|
||||||
|
- Familiarize yourself with our [Code Conventions](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/code_conventions.md) and [Git Workflow](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/git_workflow.md) to ensure smooth contributions.
|
||||||
|
- Dive into the [Development Guide](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/development.md) to get a hang of the development practices in OpenIM.
|
||||||
|
|
||||||
|
### Community Maintainers
|
||||||
|
|
||||||
|
As a community maintainer:
|
||||||
|
|
||||||
|
- Ensure that contributions align with the standards outlined in our documentation.
|
||||||
|
- Regularly review the [Logging Policy](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/bash_log.md) and [Error Codes](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/error_code.md) to stay updated.
|
||||||
|
|
||||||
|
## For Users
|
||||||
|
|
||||||
|
Users should pay particular attention to:
|
||||||
|
|
||||||
|
- [Docker Installation](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/install_docker.md) - Necessary if you're planning to use Docker images of OpenIM.
|
||||||
|
- [Docker Image Strategy](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/images.md) - To understand the different images available and how to choose the right one for your architecture.
|
@ -35,4 +35,4 @@
|
|||||||
|
|
||||||
## Testing conventions
|
## Testing conventions
|
||||||
|
|
||||||
Please refer to [TESTING.md](../../tests/TESTING.md) document.
|
Please refer to [TESTING.md](https://github.com/OpenIMSDK/Open-IM-Server/tree/main/test/readme) document.
|
||||||
|
@ -10,12 +10,11 @@ Since OpenIM is written in Go, it is fair to assume that the Go tools are all on
|
|||||||
- [Go](#go)
|
- [Go](#go)
|
||||||
- [Docker](#docker)
|
- [Docker](#docker)
|
||||||
- [Vagrant](#vagrant)
|
- [Vagrant](#vagrant)
|
||||||
- [Cloning, Building and Testing OpenIM](#cloning-building-and-testing-openim)
|
|
||||||
- [Dependency management](#dependency-management)
|
- [Dependency management](#dependency-management)
|
||||||
|
|
||||||
## Non-Linux environment prerequisites
|
## Non-Linux environment prerequisites
|
||||||
|
|
||||||
All the test and build scripts within this repository were created to be run on GNU Linux development environments. Due to this, it is suggested to use the virtual machine defined on this repository's [Vagrantfile](../../Vagrantfile) to use them.
|
All the test and build scripts within this repository were created to be run on GNU Linux development environments. Due to this, it is suggested to use the virtual machine defined on this repository's [Vagrantfile](https://developer.hashicorp.com/vagrant/docs/vagrantfile) to use them.
|
||||||
|
|
||||||
Either way, if one still wants to build and test OpenIM on non-Linux environments, specific setups are to be followed.
|
Either way, if one still wants to build and test OpenIM on non-Linux environments, specific setups are to be followed.
|
||||||
|
|
||||||
@ -62,18 +61,11 @@ OpenIM build and test processes development require Docker to run certain steps.
|
|||||||
|
|
||||||
### Vagrant
|
### Vagrant
|
||||||
|
|
||||||
As described in the [Testing documentation](../../tests/TESTING.md), all the smoke tests are run in virtual machines managed by Vagrant. To install Vagrant in the development environment, [follow the instructions from the Hashicorp website](https://www.vagrantup.com/downloads), alongside any of the following hypervisors:
|
As described in the [Testing documentation](https://github.com/OpenIMSDK/Open-IM-Server/tree/main/test/readme), all the smoke tests are run in virtual machines managed by Vagrant. To install Vagrant in the development environment, [follow the instructions from the Hashicorp website](https://www.vagrantup.com/downloads), alongside any of the following hypervisors:
|
||||||
|
|
||||||
- [VirtualBox](https://www.virtualbox.org/)
|
- [VirtualBox](https://www.virtualbox.org/)
|
||||||
- [libvirt](https://libvirt.org/) and the [vagrant-libvirt plugin](https://github.com/vagrant-libvirt/vagrant-libvirt#installation)
|
- [libvirt](https://libvirt.org/) and the [vagrant-libvirt plugin](https://github.com/vagrant-libvirt/vagrant-libvirt#installation)
|
||||||
|
|
||||||
## Cloning, Building and Testing OpenIM
|
|
||||||
|
|
||||||
These topics already have been addressed on their respective documents:
|
|
||||||
|
|
||||||
- [Git Workflow](./git-workflow.md)
|
|
||||||
- [Building](../../BUILDING.md)
|
|
||||||
- [Testing](../../tests/TESTING.md)
|
|
||||||
|
|
||||||
## Dependency management
|
## Dependency management
|
||||||
|
|
||||||
|
@ -75,15 +75,14 @@ It is critical that our full community is actively engaged on enhancements in th
|
|||||||
|
|
||||||
- Be aware the cherry pick script assumes you have a git remote called `upstream` that points at the openim-server github org.
|
- Be aware the cherry pick script assumes you have a git remote called `upstream` that points at the openim-server github org.
|
||||||
|
|
||||||
Please see our [recommended Git workflow](https://github.com/openim-server/community/blob/main/contributors/guide/github-workflow.md#workflow).
|
Please see our [recommended Git workflow](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contributors/github-workflow.md#workflow).
|
||||||
|
|
||||||
- You will need to run the cherry pick script separately for each patch release you want to cherry pick to. Cherry picks should be applied to all [active](https://github.com/openim-server/website/blob/main/content/en/releases/patch-releases.md#detailed-release-history-for-active-branches) release branches where the fix is applicable.
|
- You will need to run the cherry pick script separately for each patch release you want to cherry pick to. Cherry picks should be applied to all [active](https://github.com/OpenIMSDK/Open-IM-Server/releases) release branches where the fix is applicable.
|
||||||
|
|
||||||
- If `GITHUB_TOKEN` is not set you will be asked for your github password: provide the github [personal access token](https://github.com/settings/tokens) rather than your actual github password. If you can securely set the environment variable `GITHUB_TOKEN` to your personal access token then you can avoid an interactive prompt. Refer [mislav/hub#2655 (comment)](https://github.com/mislav/hub/issues/2655#issuecomment-735836048)
|
- If `GITHUB_TOKEN` is not set you will be asked for your github password: provide the github [personal access token](https://github.com/settings/tokens) rather than your actual github password. If you can securely set the environment variable `GITHUB_TOKEN` to your personal access token then you can avoid an interactive prompt. Refer [mislav/hub#2655 (comment)](https://github.com/mislav/hub/issues/2655#issuecomment-735836048)
|
||||||
|
|
||||||
- Your cherry pick PR will immediately get the `do-not-merge/cherry-pick-not-approved` label.
|
- Your cherry pick PR will immediately get the `do-not-merge/cherry-pick-not-approved` label.
|
||||||
|
|
||||||
[Normal rules apply for code merge](https://github.com/openim-server/community/blob/main/contributors/devel/sig-release/release.md#tldr), with some additional caveats outlined in the next section of this document.
|
|
||||||
|
|
||||||
## Cherry Pick Review
|
## Cherry Pick Review
|
||||||
|
|
||||||
|
116
docs/contrib/offline-deployment.md
Normal file
116
docs/contrib/offline-deployment.md
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
|
||||||
|
|
||||||
|
# OpenIM Offline Deployment Design
|
||||||
|
|
||||||
|
## 1. Base Images
|
||||||
|
|
||||||
|
Below are the base images and their versions you'll need:
|
||||||
|
|
||||||
|
- wurstmeister/kafka
|
||||||
|
- redis:7.0.0
|
||||||
|
- mongo:6.0.2
|
||||||
|
- mysql:5.7
|
||||||
|
- wurstmeister/zookeeper
|
||||||
|
- minio/minio
|
||||||
|
|
||||||
|
Use the following commands to pull these base images:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker pull wurstmeister/kafka
|
||||||
|
docker pull redis:7.0.0
|
||||||
|
docker pull mongo:6.0.2
|
||||||
|
docker pull mysql:5.7
|
||||||
|
docker pull wurstmeister/zookeeper
|
||||||
|
docker pull minio/minio
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. OpenIM & Chat Images
|
||||||
|
|
||||||
|
**For detailed understanding of version management and storage of OpenIM and Chat**: [version.md](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/version.md)
|
||||||
|
|
||||||
|
### OpenIM Image
|
||||||
|
|
||||||
|
- Get image version info: [images.md](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/images.md)
|
||||||
|
- Depending on the required version, execute the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker pull ghcr.io/openimsdk/openim-server:<version-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Chat Image
|
||||||
|
|
||||||
|
- Execute the following command to pull the image:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker pull ghcr.io/openimsdk/openim-server:<version-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Image Storage Selection
|
||||||
|
|
||||||
|
**Repositories**:
|
||||||
|
|
||||||
|
- Alibaba Cloud: `registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-server`
|
||||||
|
- Docker Hub: `openim/openim-server`
|
||||||
|
|
||||||
|
**Version Selection**:
|
||||||
|
|
||||||
|
- Stable: e.g. release-v3.2 (or 3.1, 3.3)
|
||||||
|
- Latest: latest
|
||||||
|
- Latest of main: main
|
||||||
|
|
||||||
|
## 4. Version Selection
|
||||||
|
|
||||||
|
You can select from the following versions:
|
||||||
|
|
||||||
|
- Stable: e.g. release-v3.2
|
||||||
|
- Latest: latest
|
||||||
|
- Latest from main branch: main
|
||||||
|
|
||||||
|
## 5. Offline Deployment Steps
|
||||||
|
|
||||||
|
1. **Pull images**: Execute the above `docker pull` commands to pull all required images locally.
|
||||||
|
2. **Save images**:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker save -o <tar-file-name>.tar <image-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
1. **Fetch code**: Clone the repository:
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/OpenIMSDK/openim-docker.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Or download the code from [Releases](https://github.com/OpenIMSDK/openim-docker/releases/).
|
||||||
|
|
||||||
|
1. **Transfer files**: Use `scp` to transfer all images and code to the intranet server.
|
||||||
|
|
||||||
|
```
|
||||||
|
scp <tar-file-name>.tar user@remote-ip:/path/on/remote/server
|
||||||
|
```
|
||||||
|
|
||||||
|
Or choose other transfer methods such as a hard drive.
|
||||||
|
|
||||||
|
1. **Import images**: On the intranet server:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker load -i <tar-file-name>.tar
|
||||||
|
```
|
||||||
|
|
||||||
|
1. **Deploy**: Navigate to the `openim-docker` repository directory and follow the README guide for deployment.
|
||||||
|
2. **Deploy using Docker-compose**:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Verify
|
||||||
|
docker-compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Note**: If you're using a version of Docker prior to 20, make sure you've installed `docker-compose`.
|
||||||
|
|
||||||
|
## 6. Reference Links
|
||||||
|
|
||||||
|
- [OpenIMSDK Issue #432](https://github.com/OpenIMSDK/Open-IM-Server/issues/432)
|
||||||
|
- [Notion Link](https://nsddd.notion.site/435ee747c0bc44048da9300a2d745ad3?pvs=25)
|
||||||
|
- [OpenIMSDK Issue #474](https://github.com/OpenIMSDK/Open-IM-Server/issues/474)
|
284
docs/conversions/github-workflow.md
Normal file
284
docs/conversions/github-workflow.md
Normal file
@ -0,0 +1,284 @@
|
|||||||
|
---
|
||||||
|
title: "GitHub Workflow"
|
||||||
|
weight: 6
|
||||||
|
description: |
|
||||||
|
This document is an overview of the GitHub workflow used by the
|
||||||
|
open-im-server project. It includes tips and suggestions on keeping your
|
||||||
|
local environment in sync with upstream and how to maintain good
|
||||||
|
commit hygiene.
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 1. Fork in the cloud
|
||||||
|
|
||||||
|
1. Visit https://github.com/openimsdk/open-im-server
|
||||||
|
2. Click `Fork` button (top right) to establish a cloud-based fork.
|
||||||
|
|
||||||
|
## 2. Clone fork to local storage
|
||||||
|
|
||||||
|
Per Go's [workspace instructions][go-workspace], place open-im-server' code on your
|
||||||
|
`GOPATH` using the following cloning procedure.
|
||||||
|
|
||||||
|
[go-workspace]: https://golang.org/doc/code.html#Workspaces
|
||||||
|
|
||||||
|
In your shell, define a local working directory as `working_dir`. If your `GOPATH` has multiple paths, pick
|
||||||
|
just one and use it instead of `$GOPATH`. You must follow exactly this pattern,
|
||||||
|
neither `$GOPATH/src/github.com/${your github profile name}/`
|
||||||
|
nor any other pattern will work.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export working_dir="$(go env GOPATH)/src/k8s.io"
|
||||||
|
```
|
||||||
|
|
||||||
|
If you already do Go development on github, the `k8s.io` directory
|
||||||
|
will be a sibling to your existing `github.com` directory.
|
||||||
|
|
||||||
|
Set `user` to match your github profile name:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export user=<your github profile name>
|
||||||
|
```
|
||||||
|
|
||||||
|
Both `$working_dir` and `$user` are mentioned in the figure above.
|
||||||
|
|
||||||
|
Create your clone:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p $working_dir
|
||||||
|
cd $working_dir
|
||||||
|
git clone https://github.com/$user/open-im-server.git
|
||||||
|
# or: git clone git@github.com:$user/open-im-server.git
|
||||||
|
|
||||||
|
cd $working_dir/open-im-server
|
||||||
|
git remote add upstream https://github.com/openimsdk/open-im-server.git
|
||||||
|
# or: git remote add upstream git@github.com:openimsdk/open-im-server.git
|
||||||
|
|
||||||
|
# Never push to upstream master
|
||||||
|
git remote set-url --push upstream no_push
|
||||||
|
|
||||||
|
# Confirm that your remotes make sense:
|
||||||
|
git remote -v
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Create a Working Branch
|
||||||
|
|
||||||
|
Get your local master up to date. Note that depending on which repository you are working from,
|
||||||
|
the default branch may be called "main" instead of "master".
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd $working_dir/open-im-server
|
||||||
|
git fetch upstream
|
||||||
|
git checkout master
|
||||||
|
git rebase upstream/master
|
||||||
|
```
|
||||||
|
|
||||||
|
Create your new branch.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git checkout -b myfeature
|
||||||
|
```
|
||||||
|
|
||||||
|
You may now edit files on the `myfeature` branch.
|
||||||
|
|
||||||
|
### Building open-im-server
|
||||||
|
|
||||||
|
This workflow is process-specific. For quick-start build instructions for [openimsdk/open-im-server](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/contrib/util_makefile.md)
|
||||||
|
|
||||||
|
## 4. Keep your branch in sync
|
||||||
|
|
||||||
|
You will need to periodically fetch changes from the `upstream`
|
||||||
|
repository to keep your working branch in sync. Note that depending on which repository you are working from,
|
||||||
|
the default branch may be called 'main' instead of 'master'.
|
||||||
|
|
||||||
|
Make sure your local repository is on your working branch and run the
|
||||||
|
following commands to keep it in sync:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git fetch upstream
|
||||||
|
git rebase upstream/master
|
||||||
|
```
|
||||||
|
|
||||||
|
Please don't use `git pull` instead of the above `fetch` and
|
||||||
|
`rebase`. Since `git pull` executes a merge, it creates merge commits. These make the commit history messy
|
||||||
|
and violate the principle that commits ought to be individually understandable
|
||||||
|
and useful (see below).
|
||||||
|
|
||||||
|
You might also consider changing your `.git/config` file via
|
||||||
|
`git config branch.autoSetupRebase always` to change the behavior of `git pull`, or another non-merge option such as `git pull --rebase`.
|
||||||
|
|
||||||
|
## 5. Commit Your Changes
|
||||||
|
|
||||||
|
You will probably want to regularly commit your changes. It is likely that you will go back and edit,
|
||||||
|
build, and test multiple times. After a few cycles of this, you might
|
||||||
|
[amend your previous commit](https://www.w3schools.com/git/git_amend.asp).
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git commit
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Push to GitHub
|
||||||
|
|
||||||
|
When your changes are ready for review, push your working branch to
|
||||||
|
your fork on GitHub.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git push -f <your_remote_name> myfeature
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. Create a Pull Request
|
||||||
|
|
||||||
|
1. Visit your fork at `https://github.com/<user>/open-im-server`
|
||||||
|
2. Click the **Compare & Pull Request** button next to your `myfeature` branch.
|
||||||
|
3. Check out the pull request process for more details and
|
||||||
|
advice.
|
||||||
|
|
||||||
|
_If you have upstream write access_, please refrain from using the GitHub UI for
|
||||||
|
creating PRs, because GitHub will create the PR branch inside the main
|
||||||
|
repository rather than inside your fork.
|
||||||
|
|
||||||
|
### Get a code review
|
||||||
|
|
||||||
|
Once your pull request has been opened it will be assigned to one or more
|
||||||
|
reviewers. Those reviewers will do a thorough code review, looking for
|
||||||
|
correctness, bugs, opportunities for improvement, documentation and comments,
|
||||||
|
and style.
|
||||||
|
|
||||||
|
Commit changes made in response to review comments to the same branch on your
|
||||||
|
fork.
|
||||||
|
|
||||||
|
Very small PRs are easy to review. Very large PRs are very difficult to review.
|
||||||
|
|
||||||
|
### Squash commits
|
||||||
|
|
||||||
|
After a review, prepare your PR for merging by squashing your commits.
|
||||||
|
|
||||||
|
All commits left on your branch after a review should represent meaningful milestones or units of work. Use commits to add clarity to the development and review process.
|
||||||
|
|
||||||
|
Before merging a PR, squash the following kinds of commits:
|
||||||
|
|
||||||
|
- Fixes/review feedback
|
||||||
|
- Typos
|
||||||
|
- Merges and rebases
|
||||||
|
- Work in progress
|
||||||
|
|
||||||
|
Aim to have every commit in a PR compile and pass tests independently if you can, but it's not a requirement. In particular, `merge` commits must be removed, as they will not pass tests.
|
||||||
|
|
||||||
|
To squash your commits, perform an [interactive rebase](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History):
|
||||||
|
|
||||||
|
1. Check your git branch:
|
||||||
|
|
||||||
|
```
|
||||||
|
git status
|
||||||
|
```
|
||||||
|
|
||||||
|
The output should be similar to this:
|
||||||
|
|
||||||
|
```
|
||||||
|
On branch your-contribution
|
||||||
|
Your branch is up to date with 'origin/your-contribution'.
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Start an interactive rebase using a specific commit hash, or count backwards from your last commit using `HEAD~<n>`, where `<n>` represents the number of commits to include in the rebase.
|
||||||
|
|
||||||
|
```
|
||||||
|
git rebase -i HEAD~3
|
||||||
|
```
|
||||||
|
|
||||||
|
The output should be similar to this:
|
||||||
|
|
||||||
|
```
|
||||||
|
pick 2ebe926 Original commit
|
||||||
|
pick 31f33e9 Address feedback
|
||||||
|
pick b0315fe Second unit of work
|
||||||
|
|
||||||
|
# Rebase 7c34fc9..b0315ff onto 7c34fc9 (3 commands)
|
||||||
|
#
|
||||||
|
# Commands:
|
||||||
|
# p, pick <commit> = use commit
|
||||||
|
# r, reword <commit> = use commit, but edit the commit message
|
||||||
|
# e, edit <commit> = use commit, but stop for amending
|
||||||
|
# s, squash <commit> = use commit, but meld into previous commit
|
||||||
|
# f, fixup <commit> = like "squash", but discard this commit's log message
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Use a command line text editor to change the word `pick` to `squash` for the commits you want to squash, then save your changes and continue the rebase:
|
||||||
|
|
||||||
|
```
|
||||||
|
pick 2ebe926 Original commit
|
||||||
|
squash 31f33e9 Address feedback
|
||||||
|
pick b0315fe Second unit of work
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
The output after saving changes should look similar to this:
|
||||||
|
|
||||||
|
```
|
||||||
|
[detached HEAD 61fdded] Second unit of work
|
||||||
|
Date: Thu Mar 5 19:01:32 2020 +0100
|
||||||
|
2 files changed, 15 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
Successfully rebased and updated refs/heads/master.
|
||||||
|
```
|
||||||
|
4. Force push your changes to your remote branch:
|
||||||
|
|
||||||
|
```
|
||||||
|
git push --force
|
||||||
|
```
|
||||||
|
|
||||||
|
For mass automated fixups such as automated doc formatting, use one or more
|
||||||
|
commits for the changes to tooling and a final commit to apply the fixup en
|
||||||
|
masse. This makes reviews easier.
|
||||||
|
|
||||||
|
An alternative to this manual squashing process is to use the Prow and Tide based automation that is configured in GitHub: adding a comment to your PR with `/label tide/merge-method-squash` will trigger the automation so that GitHub squash your commits onto the target branch once the PR is approved. Using this approach simplifies things for those less familiar with Git, but there are situations in where it's better to squash locally; reviewers will have this in mind and can ask for manual squashing to be done.
|
||||||
|
|
||||||
|
By squashing locally, you control the commit message(s) for your work, and can separate a large PR into logically separate changes.
|
||||||
|
For example: you have a pull request that is code complete and has 24 commits. You rebase this against the same merge base, simplifying the change to two commits. Each of those two commits represents a single logical change and each commit message summarizes what changes. Reviewers see that the set of changes are now understandable, and approve your PR.
|
||||||
|
|
||||||
|
## Merging a commit
|
||||||
|
|
||||||
|
Once you've received review and approval, your commits are squashed, your PR is ready for merging.
|
||||||
|
|
||||||
|
Merging happens automatically after both a Reviewer and Approver have approved the PR. If you haven't squashed your commits, they may ask you to do so before approving a PR.
|
||||||
|
|
||||||
|
## Reverting a commit
|
||||||
|
|
||||||
|
In case you wish to revert a commit, use the following instructions.
|
||||||
|
|
||||||
|
_If you have upstream write access_, please refrain from using the
|
||||||
|
`Revert` button in the GitHub UI for creating the PR, because GitHub
|
||||||
|
will create the PR branch inside the main repository rather than inside your fork.
|
||||||
|
|
||||||
|
- Create a branch and sync it with upstream. Note that depending on which repository you are working from, the default branch may be called 'main' instead of 'master'.
|
||||||
|
```sh
|
||||||
|
# create a branch
|
||||||
|
git checkout -b myrevert
|
||||||
|
|
||||||
|
# sync the branch with upstream
|
||||||
|
git fetch upstream
|
||||||
|
git rebase upstream/master
|
||||||
|
```
|
||||||
|
- If the commit you wish to revert is a *merge commit*, use this command:
|
||||||
|
```sh
|
||||||
|
# SHA is the hash of the merge commit you wish to revert
|
||||||
|
git revert -m 1 <SHA>
|
||||||
|
```
|
||||||
|
If it is a *single commit*, use this command:
|
||||||
|
```sh
|
||||||
|
# SHA is the hash of the single commit you wish to revert
|
||||||
|
git revert <SHA>
|
||||||
|
```
|
||||||
|
|
||||||
|
- This will create a new commit reverting the changes. Push this new commit to your remote.
|
||||||
|
```sh
|
||||||
|
git push <your_remote_name> myrevert
|
||||||
|
```
|
||||||
|
|
||||||
|
- Finally, [create a Pull Request](#7-create-a-pull-request) using this branch.
|
1
go.mod
1
go.mod
@ -54,6 +54,7 @@ require (
|
|||||||
cloud.google.com/go/iam v1.1.1 // indirect
|
cloud.google.com/go/iam v1.1.1 // indirect
|
||||||
cloud.google.com/go/longrunning v0.5.1 // indirect
|
cloud.google.com/go/longrunning v0.5.1 // indirect
|
||||||
cloud.google.com/go/storage v1.30.1 // indirect
|
cloud.google.com/go/storage v1.30.1 // indirect
|
||||||
|
github.com/NYTimes/gziphandler v1.1.1 // indirect
|
||||||
github.com/beorn7/perks v1.0.1 // indirect
|
github.com/beorn7/perks v1.0.1 // indirect
|
||||||
github.com/bytedance/sonic v1.9.1 // indirect
|
github.com/bytedance/sonic v1.9.1 // indirect
|
||||||
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
||||||
|
4
go.work
4
go.work
@ -1,4 +1,4 @@
|
|||||||
go 1.20
|
go 1.18
|
||||||
|
|
||||||
use (
|
use (
|
||||||
.
|
.
|
||||||
@ -7,5 +7,7 @@ use (
|
|||||||
./tools/imctl
|
./tools/imctl
|
||||||
./tools/infra
|
./tools/infra
|
||||||
./tools/ncpu
|
./tools/ncpu
|
||||||
|
./tools/versionchecker
|
||||||
|
./tools/openim-web
|
||||||
./tools/yamlfmt
|
./tools/yamlfmt
|
||||||
)
|
)
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
set -e
|
set -e
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
|
|
||||||
############################## OpenIM Github ##############################
|
############################## OpenIM Github ##############################
|
||||||
# ... rest of the script ...
|
# ... rest of the script ...
|
||||||
|
|
||||||
@ -537,7 +536,7 @@ O:::::::OOO:::::::O p:::::ppppp:::::::pe::::::::e n::::n n::::nII:
|
|||||||
# Set text color to yellow for the Slack link
|
# Set text color to yellow for the Slack link
|
||||||
echo -e "\033[1;33m"
|
echo -e "\033[1;33m"
|
||||||
|
|
||||||
print_with_delay "Join our developer community on Slack: https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg" 0.01
|
print_with_delay "Join our developer community on Slack: https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q" 0.01
|
||||||
|
|
||||||
# Reset text color back to normal
|
# Reset text color back to normal
|
||||||
echo -e "\033[0m"
|
echo -e "\033[0m"
|
||||||
|
@ -72,6 +72,7 @@ func newContext(respWriter http.ResponseWriter, req *http.Request) *UserConnCont
|
|||||||
ConnID: utils.Md5(req.RemoteAddr + "_" + strconv.Itoa(int(utils.GetCurrentTimestampByMill()))),
|
ConnID: utils.Md5(req.RemoteAddr + "_" + strconv.Itoa(int(utils.GetCurrentTimestampByMill()))),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTempContext() *UserConnContext {
|
func newTempContext() *UserConnContext {
|
||||||
return &UserConnContext{
|
return &UserConnContext{
|
||||||
Req: &http.Request{URL: &url.URL{}},
|
Req: &http.Request{URL: &url.URL{}},
|
||||||
@ -125,9 +126,11 @@ func (c *UserConnContext) GetOperationID() string {
|
|||||||
func (c *UserConnContext) SetOperationID(operationID string) {
|
func (c *UserConnContext) SetOperationID(operationID string) {
|
||||||
c.Req.URL.Query().Set(OperationID, operationID)
|
c.Req.URL.Query().Set(OperationID, operationID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *UserConnContext) GetToken() string {
|
func (c *UserConnContext) GetToken() string {
|
||||||
return c.Req.URL.Query().Get(Token)
|
return c.Req.URL.Query().Get(Token)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *UserConnContext) SetToken(token string) {
|
func (c *UserConnContext) SetToken(token string) {
|
||||||
c.Req.URL.RawQuery = Token + "=" + token
|
c.Req.URL.RawQuery = Token + "=" + token
|
||||||
}
|
}
|
||||||
|
@ -197,8 +197,10 @@ func (ws *WsServer) sendUserOnlineInfoToOtherNode(ctx context.Context, client *C
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
msgClient := msggateway.NewMsgGatewayClient(v)
|
msgClient := msggateway.NewMsgGatewayClient(v)
|
||||||
_, err := msgClient.MultiTerminalLoginCheck(ctx, &msggateway.MultiTerminalLoginCheckReq{UserID: client.UserID,
|
_, err := msgClient.MultiTerminalLoginCheck(ctx, &msggateway.MultiTerminalLoginCheckReq{
|
||||||
PlatformID: int32(client.PlatformID), Token: client.token})
|
UserID: client.UserID,
|
||||||
|
PlatformID: int32(client.PlatformID), Token: client.token,
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ZWarn(ctx, "MultiTerminalLoginCheck err", err, "node", v.Target())
|
log.ZWarn(ctx, "MultiTerminalLoginCheck err", err, "node", v.Target())
|
||||||
continue
|
continue
|
||||||
@ -206,6 +208,7 @@ func (ws *WsServer) sendUserOnlineInfoToOtherNode(ctx context.Context, client *C
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ws *WsServer) SetKickHandlerInfo(i *kickHandler) {
|
func (ws *WsServer) SetKickHandlerInfo(i *kickHandler) {
|
||||||
ws.kickHandlerChan <- i
|
ws.kickHandlerChan <- i
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
v3.1.0
|
v3.2.0
|
@ -19,7 +19,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
urllib "net/url"
|
urllib "net/url"
|
||||||
"time"
|
"time"
|
||||||
@ -41,7 +40,7 @@ func Get(url string) (response []byte, err error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
body, err := ioutil.ReadAll(resp.Body)
|
body, err := io.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,17 @@
|
|||||||
|
// Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
package kafka
|
package kafka
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,17 @@
|
|||||||
|
// Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
package tls
|
package tls
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -100,7 +100,7 @@ O:::::::OOO:::::::O p:::::ppppp:::::::pe::::::::e n::::n n::::nII:
|
|||||||
# Set text color to yellow for the Slack link
|
# Set text color to yellow for the Slack link
|
||||||
echo -e "\033[1;33m"
|
echo -e "\033[1;33m"
|
||||||
|
|
||||||
print_with_delay "Join our developer community on Slack: https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg" 0.01
|
print_with_delay "Join our developer community on Slack: https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q" 0.01
|
||||||
|
|
||||||
# Reset text color back to normal
|
# Reset text color back to normal
|
||||||
echo -e "\033[0m"
|
echo -e "\033[0m"
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
# package, the build will produce executable files under $(OUT_DIR)/bin/platforms OR $(OUT_DIR)/bin—tools/platforms.
|
# package, the build will produce executable files under $(OUT_DIR)/bin/platforms OR $(OUT_DIR)/bin—tools/platforms.
|
||||||
# If not specified, "everything" will be built.
|
# If not specified, "everything" will be built.
|
||||||
# Usage: `scripts/build-all-service.sh`.
|
# Usage: `scripts/build-all-service.sh`.
|
||||||
# Example: `hack/build-go.sh WHAT=cmd/kubelet`.
|
# Example: `scripts/build-go.sh WHAT=cmd/kubelet`.
|
||||||
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
set -o nounset
|
set -o nounset
|
||||||
@ -30,9 +30,6 @@ OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
|||||||
source "${OPENIM_ROOT}/scripts/lib/init.sh"
|
source "${OPENIM_ROOT}/scripts/lib/init.sh"
|
||||||
|
|
||||||
# CPU core number
|
# CPU core number
|
||||||
# Check the system type
|
|
||||||
system_type=$(uname)
|
|
||||||
|
|
||||||
pushd ""${OPENIM_ROOT}"/tools/ncpu" >/dev/null
|
pushd ""${OPENIM_ROOT}"/tools/ncpu" >/dev/null
|
||||||
cpu_count=$(go run .)
|
cpu_count=$(go run .)
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
@ -28,6 +28,8 @@ source "${OPENIM_ROOT}/scripts/install/common.sh"
|
|||||||
|
|
||||||
OPENIM_VERBOSE=4
|
OPENIM_VERBOSE=4
|
||||||
|
|
||||||
|
openim::log::info "\n# Begin to check all openim service"
|
||||||
|
|
||||||
# OpenIM status
|
# OpenIM status
|
||||||
# Elegant printing function
|
# Elegant printing function
|
||||||
print_services_and_ports() {
|
print_services_and_ports() {
|
||||||
@ -55,11 +57,17 @@ print_services_and_ports OPENIM_DEPENDENCY_TARGETS OPENIM_DEPENDENCY_PORT_TARGET
|
|||||||
|
|
||||||
# OpenIM check
|
# OpenIM check
|
||||||
echo "++ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}"
|
echo "++ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}"
|
||||||
echo "## Check all dependent service ports"
|
openim::log::info "\n## Check all dependent service ports"
|
||||||
echo "+++ The port being checked: ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}"
|
echo "+++ The port being checked: ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}"
|
||||||
|
|
||||||
set +e
|
set +e
|
||||||
openim::util::check_ports ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}
|
|
||||||
|
if grep -qE 'docker|kubepods' /proc/1/cgroup || [ -f /.dockerenv ]; then
|
||||||
|
openim::color::echo ${COLOR_BLUE} "Environment in the interior of the container"
|
||||||
|
else
|
||||||
|
openim::color::echo ${COLOR_BLUE} "The environment is outside the container"
|
||||||
|
openim::util::check_ports ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]} || return 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
openim::log::error_exit "The service does not start properly, please check the port, query variable definition!"
|
openim::log::error_exit "The service does not start properly, please check the port, query variable definition!"
|
||||||
@ -67,12 +75,11 @@ if [[ $? -ne 0 ]]; then
|
|||||||
else
|
else
|
||||||
echo "++++ Check all dependent service ports successfully !"
|
echo "++++ Check all dependent service ports successfully !"
|
||||||
fi
|
fi
|
||||||
set -e
|
|
||||||
|
|
||||||
echo -e "\n## Check OpenIM service name"
|
openim::log::info "\n## Check OpenIM service name"
|
||||||
. $(dirname ${BASH_SOURCE})/install/openim-msgtransfer.sh openim::msgtransfer::check
|
. $(dirname ${BASH_SOURCE})/install/openim-msgtransfer.sh openim::msgtransfer::check
|
||||||
|
|
||||||
echo -e "\n## Check all OpenIM service ports"
|
openim::log::info "\n## Check all OpenIM service ports"
|
||||||
echo "+++ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}"
|
echo "+++ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}"
|
||||||
openim::util::check_ports ${OPENIM_SERVER_PORT_LISTARIES[@]}
|
openim::util::check_ports ${OPENIM_SERVER_PORT_LISTARIES[@]}
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
@ -80,4 +87,6 @@ if [[ $? -ne 0 ]]; then
|
|||||||
openim::log::error_exit "The service does not start properly, please check the port, query variable definition!"
|
openim::log::error_exit "The service does not start properly, please check the port, query variable definition!"
|
||||||
else
|
else
|
||||||
echo "++++ Check all openim service ports successfully !"
|
echo "++++ Check all openim service ports successfully !"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
set -e
|
27
scripts/create_topic.sh
Executable file
27
scripts/create_topic.sh
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Wait for Kafka to be ready
|
||||||
|
until /opt/bitnami/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092; do
|
||||||
|
echo "Waiting for Kafka to be ready..."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create topics
|
||||||
|
/opt/bitnami/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 8 --topic latestMsgToRedis
|
||||||
|
/opt/bitnami/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 8 --topic msgToPush
|
||||||
|
/opt/bitnami/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 8 --topic offlineMsgToMongoMysql
|
||||||
|
|
||||||
|
echo "Topics created."
|
@ -14,18 +14,24 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
#fixme This scripts is the total startup scripts
|
#fixme This scripts is the total startup scripts
|
||||||
#fixme The full name of the shell scripts that needs to be started is placed in the need_to_start_server_shell array
|
#fixme The full name of the shell scripts that needs to be started is placed in the need_to_start_server_shell array
|
||||||
|
|
||||||
OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
||||||
source "${OPENIM_ROOT}/scripts/install/common.sh"
|
source "${OPENIM_ROOT}/scripts/install/common.sh"
|
||||||
|
|
||||||
|
openim::log::info "\n# Use Docker to start all openim service"
|
||||||
|
|
||||||
trap 'openim::util::onCtrlC' INT
|
trap 'openim::util::onCtrlC' INT
|
||||||
|
|
||||||
nohup "${OPENIM_ROOT}"/scripts/start-all.sh >> ${LOG_FILE} 2>&1 &
|
"${OPENIM_ROOT}"/scripts/start-all.sh
|
||||||
|
|
||||||
sleep 15
|
sleep 5
|
||||||
|
|
||||||
nohup "${OPENIM_ROOT}"/scripts/check-all.sh >> ${LOG_FILE} 2>&1 &
|
"${OPENIM_ROOT}"/scripts/check-all.sh
|
||||||
|
|
||||||
tail -f ${LOG_FILE}
|
tail -f ${LOG_FILE}
|
@ -24,27 +24,30 @@ OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
|||||||
|
|
||||||
source "${OPENIM_ROOT}/scripts/lib/init.sh"
|
source "${OPENIM_ROOT}/scripts/lib/init.sh"
|
||||||
|
|
||||||
# 定义一个配置文件数组,其中包含需要生成的配置文件的名称路径 (en: Define a profile array that contains the name path of the profile to be generated.)
|
# 定义一个配置文件数组,其中包含需要生成的配置文件的名称路径
|
||||||
readonly ENV_FILE=${ENV_FILE:-"${OPENIM_ROOT}"/scripts/install/environment.sh}
|
# (en: Define a profile array that contains the name path of the profile to be generated.)
|
||||||
|
readonly ENV_FILE=${ENV_FILE:-"${OPENIM_ROOT}/scripts/install/environment.sh"}
|
||||||
|
|
||||||
# 定义关联数组,其中键是模板文件,值是对应的输出文件 (en: Defines an associative array where the keys are the template files and the values are the corresponding output files.)
|
# 定义关联数组,其中键是模板文件,值是对应的输出文件
|
||||||
|
# (en: Defines an associative array where the keys are the template files and the values are the corresponding output files.)
|
||||||
declare -A TEMPLATES=(
|
declare -A TEMPLATES=(
|
||||||
[""${OPENIM_ROOT}"/deployments/templates/env_template.yaml"]=""${OPENIM_ROOT}"/.env"
|
["${OPENIM_ROOT}/deployments/templates/env_template.yaml"]="${OPENIM_ROOT}/.env"
|
||||||
[""${OPENIM_ROOT}"/deployments/templates/openim.yaml"]=""${OPENIM_ROOT}"/config/config.yaml"
|
["${OPENIM_ROOT}/deployments/templates/openim.yaml"]="${OPENIM_ROOT}/config/config.yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
for template in "${!TEMPLATES[@]}"; do
|
for template in "${!TEMPLATES[@]}"; do
|
||||||
output_file=${TEMPLATES[$template]}
|
|
||||||
|
|
||||||
if [[ ! -f "${template}" ]]; then
|
if [[ ! -f "${template}" ]]; then
|
||||||
openim::log::error_exit "template file ${template} does not exist..."
|
openim::log::error_exit "template file ${template} does not exist..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
openim::log::info "⌚ Working with template file: ${template} to ${output_file}..."
|
IFS=';' read -ra OUTPUT_FILES <<< "${TEMPLATES[$template]}"
|
||||||
""${OPENIM_ROOT}"/scripts/genconfig.sh" "${ENV_FILE}" "${template}" > "${output_file}" || {
|
for output_file in "${OUTPUT_FILES[@]}"; do
|
||||||
openim::log::error "Error processing template file ${template}"
|
openim::log::info "⌚ Working with template file: ${template} to ${output_file}..."
|
||||||
exit 1
|
"${OPENIM_ROOT}/scripts/genconfig.sh" "${ENV_FILE}" "${template}" > "${output_file}" || {
|
||||||
}
|
openim::log::error "Error processing template file ${template}"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
openim::log::success "✨ All configuration files have been successfully generated!"
|
openim::log::success "✨ All configuration files have been successfully generated!"
|
||||||
|
@ -22,6 +22,8 @@ set -o pipefail
|
|||||||
OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd -P)
|
OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd -P)
|
||||||
source "${OPENIM_ROOT}/scripts/install/common.sh"
|
source "${OPENIM_ROOT}/scripts/install/common.sh"
|
||||||
|
|
||||||
|
openim::log::info "\n# Begin Install OpenIM Config"
|
||||||
|
|
||||||
for file in "${OPENIM_SERVER_TARGETS[@]}"; do
|
for file in "${OPENIM_SERVER_TARGETS[@]}"; do
|
||||||
VARNAME="$(echo $file | tr '[:lower:]' '[:upper:]' | tr '.' '_' | tr '-' '_')"
|
VARNAME="$(echo $file | tr '[:lower:]' '[:upper:]' | tr '.' '_' | tr '-' '_')"
|
||||||
VARVALUE="$OPENIM_OUTPUT_HOSTBIN/$file"
|
VARVALUE="$OPENIM_OUTPUT_HOSTBIN/$file"
|
||||||
|
89
scripts/init-githooks.sh
Executable file
89
scripts/init-githooks.sh
Executable file
@ -0,0 +1,89 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# init-githooks.sh
|
||||||
|
#
|
||||||
|
# This script assists in managing Git hooks for the OpenIM project.
|
||||||
|
# When executed:
|
||||||
|
# 1. It prompts the user to enable git hooks.
|
||||||
|
# 2. If the user accepts, it copies predefined hook scripts to the appropriate
|
||||||
|
# Git directory, making them executable.
|
||||||
|
# 3. If requested, it can delete the added hooks.
|
||||||
|
#
|
||||||
|
# This script equal runs `make init-githooks` command.
|
||||||
|
# Usage:
|
||||||
|
# ./init-githooks.sh Prompt to enable git hooks.
|
||||||
|
# ./init-githooks.sh --delete Delete previously added git hooks.
|
||||||
|
# ./init-githooks.sh --help Show the help message.
|
||||||
|
#
|
||||||
|
# Example: `scripts/build-go.sh --help`.
|
||||||
|
# Documentation & related context can be found at:
|
||||||
|
# https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694
|
||||||
|
#
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
||||||
|
HOOKS_DIR=".git/hooks"
|
||||||
|
|
||||||
|
help_info() {
|
||||||
|
echo "Usage: $0 [options]"
|
||||||
|
echo
|
||||||
|
echo "This script helps to manage git hooks."
|
||||||
|
echo
|
||||||
|
echo "Options:"
|
||||||
|
echo " -h, --help Show this help message and exit."
|
||||||
|
echo " -d, --delete Delete the hooks that have been added."
|
||||||
|
echo " By default, it will prompt to enable git hooks."
|
||||||
|
}
|
||||||
|
|
||||||
|
delete_hooks() {
|
||||||
|
for file in scripts/githooks/*.sh; do
|
||||||
|
hook_name=$(basename "$file" .sh)
|
||||||
|
rm -f "$HOOKS_DIR/$hook_name"
|
||||||
|
done
|
||||||
|
echo "Git hooks have been deleted."
|
||||||
|
}
|
||||||
|
|
||||||
|
enable_hooks() {
|
||||||
|
echo "Would you like to enable git hooks mode? [y/n]"
|
||||||
|
read -r choice
|
||||||
|
|
||||||
|
if [[ $choice == "y" || $choice == "Y" ]]; then
|
||||||
|
for file in scripts/githooks/*.sh; do
|
||||||
|
cp -f "$file" "$HOOKS_DIR/$(basename "$file" .sh)"
|
||||||
|
done
|
||||||
|
|
||||||
|
chmod +x $HOOKS_DIR/*
|
||||||
|
|
||||||
|
echo "Git hooks mode has been enabled."
|
||||||
|
echo "With git hooks enabled, every time you perform a git action (e.g. git commit), the corresponding hooks script will be triggered automatically."
|
||||||
|
echo "This means that if the size of the file you're committing exceeds the set limit (e.g. 42MB), the commit will be rejected."
|
||||||
|
else
|
||||||
|
echo "Git hooks mode remains disabled."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
-h|--help)
|
||||||
|
help_info
|
||||||
|
;;
|
||||||
|
-d|--delete)
|
||||||
|
delete_hooks
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
enable_hooks
|
||||||
|
;;
|
||||||
|
esac
|
@ -24,12 +24,17 @@ OPENIM_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd -P)"
|
|||||||
LOCAL_OUTPUT_ROOT=""${OPENIM_ROOT}"/${OUT_DIR:-_output}"
|
LOCAL_OUTPUT_ROOT=""${OPENIM_ROOT}"/${OUT_DIR:-_output}"
|
||||||
source "${OPENIM_ROOT}/scripts/lib/init.sh"
|
source "${OPENIM_ROOT}/scripts/lib/init.sh"
|
||||||
|
|
||||||
#TODO
|
#TODO: Access to the IP networks outside, or you want to use the IP network
|
||||||
# IP=http://127.0.0.1
|
# IP=http://127.0.0.1
|
||||||
if [ -z "${IP}" ]; then
|
if [ -z "${IP}" ]; then
|
||||||
IP=$(openim::util::get_server_ip)
|
IP=$(openim::util::get_server_ip)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# config.gateway custom bridge modes
|
||||||
|
# if [ -z "{IP_GATEWAY}" ] then
|
||||||
|
# IP_GATEWAY=$(openim::util::get_local_ip)
|
||||||
|
# fi
|
||||||
|
|
||||||
function def() {
|
function def() {
|
||||||
local var_name="$1"
|
local var_name="$1"
|
||||||
local default_value="${2:-}"
|
local default_value="${2:-}"
|
||||||
@ -37,7 +42,9 @@ function def() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# app要能访问到此ip和端口或域名
|
# app要能访问到此ip和端口或域名
|
||||||
def "API_URL" "http://${IP}:10002"
|
readonly API_URL=${API_URL:-"http://${IP}:10002"}
|
||||||
|
|
||||||
|
# OpenIM Docker Compose 数据存储的默认路径
|
||||||
def "DATA_DIR" "${OPENIM_ROOT}"
|
def "DATA_DIR" "${OPENIM_ROOT}"
|
||||||
|
|
||||||
# 设置统一的用户名,方便记忆
|
# 设置统一的用户名,方便记忆
|
||||||
@ -59,6 +66,47 @@ mkdir -p ${INSTALL_DIR}
|
|||||||
|
|
||||||
def "ENV_FILE" ""${OPENIM_ROOT}"/scripts/install/environment.sh"
|
def "ENV_FILE" ""${OPENIM_ROOT}"/scripts/install/environment.sh"
|
||||||
|
|
||||||
|
###################### Docker compose ###################
|
||||||
|
# OPENIM AND CHAT
|
||||||
|
def "CHAT_BRANCH" "main"
|
||||||
|
def "SERVER_BRANCH" "main"
|
||||||
|
|
||||||
|
###################### OpenIM Docker Network ######################
|
||||||
|
# 设置 Docker 网络的网段
|
||||||
|
readonly DOCKER_BRIDGE_SUBNET=${DOCKER_BRIDGE_SUBNET:-'172.28.0.0/16'}
|
||||||
|
IP_PREFIX=$(echo $DOCKER_BRIDGE_SUBNET | cut -d '/' -f 1)
|
||||||
|
SUBNET=$(echo $DOCKER_BRIDGE_SUBNET | cut -d '/' -f 2)
|
||||||
|
LAST_OCTET=$(echo $IP_PREFIX | cut -d '.' -f 4)
|
||||||
|
|
||||||
|
generate_ip() {
|
||||||
|
local NEW_IP="$(echo $IP_PREFIX | cut -d '.' -f 1-3).$((LAST_OCTET++))"
|
||||||
|
echo $NEW_IP
|
||||||
|
}
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
DOCKER_BRIDGE_GATEWAY=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
MYSQL_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
MONGO_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
REDIS_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
KAFKA_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
ZOOKEEPER_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
MINIO_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
OPENIM_WEB_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
OPENIM_SERVER_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
OPENIM_CHAT_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
PROMETHEUS_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
LAST_OCTET=$((LAST_OCTET + 1))
|
||||||
|
GRAFANA_NETWORK_ADDRESS=$(generate_ip)
|
||||||
|
|
||||||
###################### openim 配置 ######################
|
###################### openim 配置 ######################
|
||||||
# read: https://github.com/OpenIMSDK/Open-IM-Server/blob/main/deployment/init/README.md
|
# read: https://github.com/OpenIMSDK/Open-IM-Server/blob/main/deployment/init/README.md
|
||||||
def "OPENIM_DATA_DIR" "/data/openim"
|
def "OPENIM_DATA_DIR" "/data/openim"
|
||||||
@ -68,87 +116,122 @@ def "OPENIM_LOG_DIR" "/var/log/openim"
|
|||||||
def "CA_FILE" "${OPENIM_CONFIG_DIR}/cert/ca.pem"
|
def "CA_FILE" "${OPENIM_CONFIG_DIR}/cert/ca.pem"
|
||||||
|
|
||||||
def "OPNEIM_CONFIG" ""${OPENIM_ROOT}"/config"
|
def "OPNEIM_CONFIG" ""${OPENIM_ROOT}"/config"
|
||||||
|
def "OPENIM_SERVER_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # OpenIM服务地址
|
||||||
|
|
||||||
|
# OpenIM Websocket端口
|
||||||
|
readonly OPENIM_WS_PORT=${OPENIM_WS_PORT:-'10001'}
|
||||||
|
|
||||||
|
# OpenIM API端口
|
||||||
|
readonly API_OPENIM_PORT=${API_OPENIM_PORT:-'10002'}
|
||||||
|
def "API_LISTEN_IP" "0.0.0.0" # API的监听IP
|
||||||
|
|
||||||
|
###################### openim-chat 配置信息 ######################
|
||||||
|
def "OPENIM_CHAT_DATA_DIR" "./openim-chat/${CHAT_BRANCH}"
|
||||||
|
def "OPENIM_CHAT_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # OpenIM服务地址
|
||||||
|
def "OPENIM_CHAT_API_PORT" "10008" # OpenIM API端口
|
||||||
|
def "CHAT_API_LISTEN_IP" "" # OpenIM API的监听IP
|
||||||
|
|
||||||
|
def "OPENIM_ADMIN_API_PORT" "10009" # OpenIM Admin API端口
|
||||||
|
def "ADMIN_API_LISTEN_IP" "" # OpenIM Admin API的监听IP
|
||||||
|
|
||||||
|
def "OPENIM_ADMIN_PORT" "30200" # OpenIM chat Admin端口
|
||||||
|
def "OPENIM_CHAT_PORT" "30300" # OpenIM chat Admin的监听IP
|
||||||
|
|
||||||
|
def "OPENIM_ADMIN_NAME" "admin" # openim-chat Admin用户名
|
||||||
|
def "OPENIM_CHAT_NAME" "chat" # openim-chat chat用户名
|
||||||
|
|
||||||
# TODO 注意: 一般的配置都可以使用 def 函数来定义,如果是包含特殊字符,比如说:
|
# TODO 注意: 一般的配置都可以使用 def 函数来定义,如果是包含特殊字符,比如说:
|
||||||
# TODO readonly MSG_DESTRUCT_TIME=${MSG_DESTRUCT_TIME:-'0 2 * * *'}
|
# TODO readonly MSG_DESTRUCT_TIME=${MSG_DESTRUCT_TIME:-'0 2 * * *'}
|
||||||
# TODO 使用 readonly 来定义合适,负责无法正常解析, 并且 yaml 模板需要加 "" 来包裹
|
# TODO 使用 readonly 来定义合适,负责无法正常解析, 并且 yaml 模板需要加 "" 来包裹
|
||||||
|
|
||||||
###################### Zookeeper 配置信息 ######################
|
###################### Zookeeper 配置信息 ######################
|
||||||
def "ZOOKEEPER_SCHEMA" "openim" # Zookeeper的模式
|
def "ZOOKEEPER_SCHEMA" "openim" # Zookeeper的模式
|
||||||
def "ZOOKEEPER_PORT" "2181" # Zookeeper的端口
|
def "ZOOKEEPER_PORT" "12181" # Zookeeper的端口
|
||||||
def "ZOOKEEPER_ADDRESS" "127.0.0.1" # Zookeeper的地址
|
def "ZOOKEEPER_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # Zookeeper的地址
|
||||||
def "ZOOKEEPER_USERNAME" "" # Zookeeper的用户名
|
def "ZOOKEEPER_USERNAME" "" # Zookeeper的用户名
|
||||||
def "ZOOKEEPER_PASSWORD" "" # Zookeeper的密码
|
def "ZOOKEEPER_PASSWORD" "" # Zookeeper的密码
|
||||||
|
|
||||||
###################### MySQL 配置信息 ######################
|
###################### MySQL 配置信息 ######################
|
||||||
def "MYSQL_PORT" "13306" # MySQL的端口
|
def "MYSQL_PORT" "13306" # MySQL的端口
|
||||||
def "MYSQL_ADDRESS" "127.0.0.1" # MySQL的地址
|
def "MYSQL_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # MySQL的地址
|
||||||
def "MYSQL_USERNAME" "${USER}" # MySQL的用户名
|
def "MYSQL_USERNAME" "${USER}" # MySQL的用户名
|
||||||
def "MYSQL_PASSWORD" "${PASSWORD}" # MySQL的密码
|
def "MYSQL_PASSWORD" "${PASSWORD}" # MySQL的密码
|
||||||
def "MYSQL_DATABASE" "${DATABASE_NAME}" # MySQL的数据库名
|
def "MYSQL_DATABASE" "${DATABASE_NAME}" # MySQL的数据库名
|
||||||
def "MYSQL_MAX_OPEN_CONN" "1000" # 最大打开的连接数
|
def "MYSQL_MAX_OPEN_CONN" "1000" # 最大打开的连接数
|
||||||
def "MYSQL_MAX_IDLE_CONN" "100" # 最大空闲连接数
|
def "MYSQL_MAX_IDLE_CONN" "100" # 最大空闲连接数
|
||||||
def "MYSQL_MAX_LIFETIME" "60" # 连接可以重用的最大生命周期(秒)
|
def "MYSQL_MAX_LIFETIME" "60" # 连接可以重用的最大生命周期(秒)
|
||||||
def "MYSQL_LOG_LEVEL" "4" # 日志级别
|
def "MYSQL_LOG_LEVEL" "4" # 日志级别
|
||||||
def "MYSQL_SLOW_THRESHOLD" "500" # 慢查询阈值(毫秒)
|
def "MYSQL_SLOW_THRESHOLD" "500" # 慢查询阈值(毫秒)
|
||||||
|
|
||||||
###################### MongoDB 配置信息 ######################
|
###################### MongoDB 配置信息 ######################
|
||||||
def "MONGO_URI" # MongoDB的URI
|
def "MONGO_URI" # MongoDB的URI
|
||||||
def "MONGO_PORT" "37017" # MongoDB的端口
|
def "MONGO_PORT" "37017" # MongoDB的端口
|
||||||
def "MONGO_ADDRESS" "127.0.0.1" # MongoDB的地址
|
def "MONGO_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # MongoDB的地址
|
||||||
def "MONGO_DATABASE" "${DATABASE_NAME}" # MongoDB的数据库名
|
def "MONGO_DATABASE" "${DATABASE_NAME}" # MongoDB的数据库名
|
||||||
def "MONGO_USERNAME" "${USER}" # MongoDB的用户名
|
def "MONGO_USERNAME" "${USER}" # MongoDB的用户名
|
||||||
def "MONGO_PASSWORD" "${PASSWORD}" # MongoDB的密码
|
def "MONGO_PASSWORD" "${PASSWORD}" # MongoDB的密码
|
||||||
def "MONGO_MAX_POOL_SIZE" "100" # 最大连接池大小
|
def "MONGO_MAX_POOL_SIZE" "100" # 最大连接池大小
|
||||||
|
|
||||||
###################### Object 配置信息 ######################
|
###################### Object 配置信息 ######################
|
||||||
def "OBJECT_ENABLE" "minio" # 对象是否启用
|
def "OBJECT_ENABLE" "minio" # 对象是否启用
|
||||||
def "OBJECT_APIURL" "http://${IP}:10002" # 对象的API地址
|
# 对象的API地址
|
||||||
def "MINIO_BUCKET" "openim" # MinIO的存储桶名称
|
readonly OBJECT_APIURL=${OBJECT_APIURL:-"http://${IP}:10002"}
|
||||||
def "MINIO_PORT" "10005" # MinIO的端口
|
def "MINIO_BUCKET" "openim" # MinIO的存储桶名称
|
||||||
|
def "MINIO_PORT" "10005" # MinIO的端口
|
||||||
# MinIO的端点URL
|
# MinIO的端点URL
|
||||||
readonly MINIO_ENDPOINT=${MINIO_ENDPOINT:-"http://127.0.0.1:${MINIO_PORT}"}
|
def MINIO_ADDRESS "${DOCKER_BRIDGE_GATEWAY}"
|
||||||
def "MINIO_ACCESS_KEY" "${USER}" # MinIO的访问密钥ID
|
readonly MINIO_ENDPOINT=${MINIO_ENDPOINT:-"http://${MINIO_ADDRESS}:${MINIO_PORT}"}
|
||||||
def "MINIO_SECRET_KEY" "${PASSWORD}" # MinIO的密钥
|
def "MINIO_ACCESS_KEY" "${USER}" # MinIO的访问密钥ID
|
||||||
def "MINIO_SESSION_TOKEN" # MinIO的会话令牌
|
def "MINIO_SECRET_KEY" "${PASSWORD}" # MinIO的密钥
|
||||||
|
def "MINIO_SESSION_TOKEN" # MinIO的会话令牌
|
||||||
readonly MINIO_SIGN_ENDPOINT=${MINIO_SIGN_ENDPOINT:-"http://${IP}:${MINIO_PORT}"} # signEndpoint为minio公网地址 # MinIO的会话令牌
|
readonly MINIO_SIGN_ENDPOINT=${MINIO_SIGN_ENDPOINT:-"http://${IP}:${MINIO_PORT}"} # signEndpoint为minio公网地址 # MinIO的会话令牌
|
||||||
def "COS_BUCKET_URL" "https://temp-1252357374.cos.ap-chengdu.myqcloud.com" # 腾讯云COS的存储桶URL
|
# 腾讯云COS的存储桶URL
|
||||||
def "COS_SECRET_ID" # 腾讯云COS的密钥ID
|
def "COS_BUCKET_URL" "https://temp-1252357374.cos.ap-chengdu.myqcloud.com"
|
||||||
def "COS_SECRET_KEY" # 腾讯云COS的密钥
|
def "COS_SECRET_ID" # 腾讯云COS的密钥ID
|
||||||
def "COS_SESSION_TOKEN" # 腾讯云COS的会话令牌
|
def "COS_SECRET_KEY" # 腾讯云COS的密钥
|
||||||
def "OSS_ENDPOINT" "https://oss-cn-chengdu.aliyuncs.com" # 阿里云OSS的端点URL
|
def "COS_SESSION_TOKEN" # 腾讯云COS的会话令牌
|
||||||
def "OSS_BUCKET" "demo-9999999" # 阿里云OSS的存储桶名称
|
def "OSS_ENDPOINT" "https://oss-cn-chengdu.aliyuncs.com" # 阿里云OSS的端点URL
|
||||||
def "OSS_BUCKET_URL" "https://demo-9999999.oss-cn-chengdu.aliyuncs.com" # 阿里云OSS的存储桶URL
|
def "OSS_BUCKET" "demo-9999999" # 阿里云OSS的存储桶名称
|
||||||
def "OSS_ACCESS_KEY_ID" # 阿里云OSS的访问密钥ID
|
def "OSS_BUCKET_URL" "https://demo-9999999.oss-cn-chengdu.aliyuncs.com" # 阿里云OSS的存储桶URL
|
||||||
def "OSS_ACCESS_KEY_SECRET" # 阿里云OSS的密钥
|
def "OSS_ACCESS_KEY_ID" # 阿里云OSS的访问密钥ID
|
||||||
def "OSS_SESSION_TOKEN" # 阿里云OSS的会话令牌
|
def "OSS_ACCESS_KEY_SECRET" # 阿里云OSS的密钥
|
||||||
|
def "OSS_SESSION_TOKEN" # 阿里云OSS的会话令牌
|
||||||
|
|
||||||
###################### Redis 配置信息 ######################
|
###################### Redis 配置信息 ######################
|
||||||
def "REDIS_PORT" "16379" # Redis的端口
|
def "REDIS_PORT" "16379" # Redis的端口
|
||||||
def "REDIS_ADDRESS" "127.0.0.1" # Redis的地址
|
def "REDIS_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # Redis的地址
|
||||||
def "REDIS_USERNAME" # Redis的用户名
|
def "REDIS_USERNAME" # Redis的用户名
|
||||||
def "REDIS_PASSWORD" "${PASSWORD}" # Redis的密码
|
def "REDIS_PASSWORD" "${PASSWORD}" # Redis的密码
|
||||||
|
|
||||||
###################### Kafka 配置信息 ######################
|
###################### Kafka 配置信息 ######################
|
||||||
def "KAFKA_USERNAME" # Kafka的用户名
|
def "KAFKA_USERNAME" # `Kafka` 的用户名
|
||||||
def "KAFKA_PASSWORD" # Kafka的密码
|
def "KAFKA_PASSWORD" # `Kafka` 的密码
|
||||||
def "KAFKA_PORT" "9092" # Kafka的端口
|
def "KAFKA_PORT" "19094" # `Kafka` 的端口
|
||||||
def "KAFKA_ADDR" "127.0.0.1" # Kafka的地址
|
def "KAFKA_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # `Kafka` 的地址
|
||||||
def "KAFKA_LATESTMSG_REDIS_TOPIC" "latestMsgToRedis" # Kafka的最新消息到Redis的主题
|
def "KAFKA_LATESTMSG_REDIS_TOPIC" "latestMsgToRedis" # `Kafka` 的最新消息到Redis的主题
|
||||||
def "KAFKA_OFFLINEMSG_MONGO_TOPIC" "offlineMsgToMongoMysql" # Kafka的离线消息到Mongo的主题
|
def "KAFKA_OFFLINEMSG_MONGO_TOPIC" "offlineMsgToMongoMysql" # `Kafka` 的离线消息到Mongo的主题
|
||||||
def "KAFKA_MSG_PUSH_TOPIC" "msgToPush" # Kafka的消息到推送的主题
|
def "KAFKA_MSG_PUSH_TOPIC" "msgToPush" # `Kafka` 的消息到推送的主题
|
||||||
def "KAFKA_CONSUMERGROUPID_REDIS" "redis" # Kafka的消费组ID到Redis
|
def "KAFKA_CONSUMERGROUPID_REDIS" "redis" # `Kafka` 的消费组ID到Redis
|
||||||
def "KAFKA_CONSUMERGROUPID_MONGO" "mongo" # Kafka的消费组ID到Mongo
|
def "KAFKA_CONSUMERGROUPID_MONGO" "mongo" # `Kafka` 的消费组ID到Mongo
|
||||||
def "KAFKA_CONSUMERGROUPID_MYSQL" "mysql" # Kafka的消费组ID到MySql
|
def "KAFKA_CONSUMERGROUPID_MYSQL" "mysql" # `Kafka` 的消费组ID到MySql
|
||||||
def "KAFKA_CONSUMERGROUPID_PUSH" "push" # Kafka的消费组ID到推送
|
def "KAFKA_CONSUMERGROUPID_PUSH" "push" # `Kafka` 的消费组ID到推送
|
||||||
|
|
||||||
|
###################### openim-web 配置信息 ######################
|
||||||
|
def "OPENIM_WEB_PORT" "11001" # openim-web的端口
|
||||||
|
def "OPENIM_WEB_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # openim-web的地址
|
||||||
|
def "OPENIM_WEB_DIST_PATH" "/app/dist" # openim-web的dist路径
|
||||||
|
|
||||||
###################### RPC 配置信息 ######################
|
###################### RPC 配置信息 ######################
|
||||||
def "RPC_REGISTER_IP" # RPC的注册IP
|
def "RPC_REGISTER_IP" # RPC的注册IP
|
||||||
def "RPC_LISTEN_IP" "0.0.0.0" # RPC的监听IP
|
def "RPC_LISTEN_IP" "0.0.0.0" # RPC的监听IP
|
||||||
|
|
||||||
###################### API 配置信息 ######################
|
###################### prometheus 配置 ######################
|
||||||
# API的开放端口, 只能设置一个端口
|
def "PROMETHEUS_PORT" "19090" # Prometheus的端口
|
||||||
def "API_OPENIM_PORT" "10002"
|
def "PROMETHEUS_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # Prometheus的地址
|
||||||
def "API_LISTEN_IP" "0.0.0.0" # API的监听IP
|
|
||||||
|
###################### Grafana 配置信息 ######################
|
||||||
|
def "GRAFANA_PORT" "3000" # Grafana的端口
|
||||||
|
def "GRAFANA_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # Grafana的地址
|
||||||
|
|
||||||
###################### RPC Port Configuration Variables ######################
|
###################### RPC Port Configuration Variables ######################
|
||||||
# For launching multiple programs, just fill in multiple ports separated by commas
|
# For launching multiple programs, just fill in multiple ports separated by commas
|
||||||
@ -175,27 +258,26 @@ readonly OPENIM_CONVERSATION_PORT=${OPENIM_CONVERSATION_PORT:-'10180'}
|
|||||||
readonly OPENIM_THIRD_PORT=${OPENIM_THIRD_PORT:-'10190'}
|
readonly OPENIM_THIRD_PORT=${OPENIM_THIRD_PORT:-'10190'}
|
||||||
|
|
||||||
###################### RPC Register Name Variables ######################
|
###################### RPC Register Name Variables ######################
|
||||||
def "OPENIM_USER_NAME" "User" # OpenIM用户服务名称
|
def "OPENIM_USER_NAME" "User" # OpenIM用户服务名称
|
||||||
def "OPENIM_FRIEND_NAME" "Friend" # OpenIM朋友服务名称
|
def "OPENIM_FRIEND_NAME" "Friend" # OpenIM朋友服务名称
|
||||||
def "OPENIM_MSG_NAME" "Msg" # OpenIM消息服务名称
|
def "OPENIM_MSG_NAME" "Msg" # OpenIM消息服务名称
|
||||||
def "OPENIM_PUSH_NAME" "Push" # OpenIM推送服务名称
|
def "OPENIM_PUSH_NAME" "Push" # OpenIM推送服务名称
|
||||||
def "OPENIM_MESSAGE_GATEWAY_NAME" "MessageGateway" # OpenIM消息网关服务名称
|
def "OPENIM_MESSAGE_GATEWAY_NAME" "MessageGateway" # OpenIM消息网关服务名称
|
||||||
def "OPENIM_GROUP_NAME" "Group" # OpenIM组服务名称
|
def "OPENIM_GROUP_NAME" "Group" # OpenIM组服务名称
|
||||||
def "OPENIM_AUTH_NAME" "Auth" # OpenIM授权服务名称
|
def "OPENIM_AUTH_NAME" "Auth" # OpenIM授权服务名称
|
||||||
def "OPENIM_CONVERSATION_NAME" "Conversation" # OpenIM对话服务名称
|
def "OPENIM_CONVERSATION_NAME" "Conversation" # OpenIM对话服务名称
|
||||||
def "OPENIM_THIRD_NAME" "Third" # OpenIM第三方服务名称
|
def "OPENIM_THIRD_NAME" "Third" # OpenIM第三方服务名称
|
||||||
|
|
||||||
###################### Log Configuration Variables ######################
|
###################### Log Configuration Variables ######################
|
||||||
def "LOG_STORAGE_LOCATION" ""${OPENIM_ROOT}"/logs/" # 日志存储位置
|
def "LOG_STORAGE_LOCATION" ""${OPENIM_ROOT}"/logs/" # 日志存储位置
|
||||||
def "LOG_ROTATION_TIME" "24" # 日志轮替时间
|
def "LOG_ROTATION_TIME" "24" # 日志轮替时间
|
||||||
def "LOG_REMAIN_ROTATION_COUNT" "2" # 保留的日志轮替数量
|
def "LOG_REMAIN_ROTATION_COUNT" "2" # 保留的日志轮替数量
|
||||||
def "LOG_REMAIN_LOG_LEVEL" "6" # 保留的日志级别
|
def "LOG_REMAIN_LOG_LEVEL" "6" # 保留的日志级别
|
||||||
def "LOG_IS_STDOUT" "false" # 是否将日志输出到标准输出
|
def "LOG_IS_STDOUT" "false" # 是否将日志输出到标准输出
|
||||||
def "LOG_IS_JSON" "false" # 日志是否为JSON格式
|
def "LOG_IS_JSON" "false" # 日志是否为JSON格式
|
||||||
def "LOG_WITH_STACK" "false" # 日志是否带有堆栈信息
|
def "LOG_WITH_STACK" "false" # 日志是否带有堆栈信息
|
||||||
|
|
||||||
###################### Variables definition ######################
|
###################### Variables definition ######################
|
||||||
def "OPENIM_WS_PORT" "10001" # OpenIM WS端口
|
|
||||||
def "WEBSOCKET_MAX_CONN_NUM" "100000" # Websocket最大连接数
|
def "WEBSOCKET_MAX_CONN_NUM" "100000" # Websocket最大连接数
|
||||||
def "WEBSOCKET_MAX_MSG_LEN" "4096" # Websocket最大消息长度
|
def "WEBSOCKET_MAX_MSG_LEN" "4096" # Websocket最大消息长度
|
||||||
def "WEBSOCKET_TIMEOUT" "10" # Websocket超时
|
def "WEBSOCKET_TIMEOUT" "10" # Websocket超时
|
||||||
@ -223,32 +305,43 @@ def "RETAIN_CHAT_RECORDS" "365" # 保留聊天记录
|
|||||||
readonly CHAT_RECORDS_CLEAR_TIME=${CHAT_RECORDS_CLEAR_TIME:-'0 2 * * 3'}
|
readonly CHAT_RECORDS_CLEAR_TIME=${CHAT_RECORDS_CLEAR_TIME:-'0 2 * * 3'}
|
||||||
# 消息销毁时间
|
# 消息销毁时间
|
||||||
readonly MSG_DESTRUCT_TIME=${MSG_DESTRUCT_TIME:-'0 2 * * *'}
|
readonly MSG_DESTRUCT_TIME=${MSG_DESTRUCT_TIME:-'0 2 * * *'}
|
||||||
def "SECRET" "${PASSWORD}" # 密钥
|
def "SECRET" "${PASSWORD}" # 密钥
|
||||||
def "TOKEN_EXPIRE" "90" # Token到期时间
|
def "TOKEN_EXPIRE" "90" # Token到期时间
|
||||||
def "FRIEND_VERIFY" "false" # 朋友验证
|
def "FRIEND_VERIFY" "false" # 朋友验证
|
||||||
def "IOS_PUSH_SOUND" "xxx" # IOS推送声音
|
def "IOS_PUSH_SOUND" "xxx" # IOS推送声音
|
||||||
def "IOS_BADGE_COUNT" "true" # IOS徽章计数
|
def "IOS_BADGE_COUNT" "true" # IOS徽章计数
|
||||||
def "IOS_PRODUCTION" "false" # IOS生产
|
def "IOS_PRODUCTION" "false" # IOS生产
|
||||||
|
|
||||||
###################### Prometheus 配置信息 ######################
|
###################### Prometheus 配置信息 ######################
|
||||||
def "PROMETHEUS_ENABLE" "false" # 是否启用 Prometheus
|
def "PROMETHEUS_ENABLE" "false" # 是否启用 Prometheus
|
||||||
def "USER_PROM_PORT" "20110" # User 服务的 Prometheus 端口
|
# User 服务的 Prometheus 端口
|
||||||
def "FRIEND_PROM_PORT" "20120" # Friend 服务的 Prometheus 端口
|
readonly USER_PROM_PORT=${USER_PROM_PORT:-'20110'}
|
||||||
def "MESSAGE_PROM_PORT" "20130" # Message 服务的 Prometheus 端口
|
# Friend 服务的 Prometheus 端口
|
||||||
def "MSG_GATEWAY_PROM_PORT" "20140" # Message Gateway 服务的 Prometheus 端口
|
readonly FRIEND_PROM_PORT=${FRIEND_PROM_PORT:-'20120'}
|
||||||
def "GROUP_PROM_PORT" "20150" # Group 服务的 Prometheus 端口
|
# Message 服务的 Prometheus 端口
|
||||||
def "AUTH_PROM_PORT" "20160" # Auth 服务的 Prometheus 端口
|
readonly MESSAGE_PROM_PORT=${MESSAGE_PROM_PORT:-'20130'}
|
||||||
def "PUSH_PROM_PORT" "20170" # Push 服务的 Prometheus 端口
|
# Message Gateway 服务的 Prometheus 端口
|
||||||
def "CONVERSATION_PROM_PORT" "20230" # Conversation 服务的 Prometheus 端口
|
readonly MSG_GATEWAY_PROM_PORT=${MSG_GATEWAY_PROM_PORT:-'20140'}
|
||||||
def "RTC_PROM_PORT" "21300" # RTC 服务的 Prometheus 端口
|
# Group 服务的 Prometheus 端口
|
||||||
def "THIRD_PROM_PORT" "21301" # Third 服务的 Prometheus 端口
|
readonly GROUP_PROM_PORT=${GROUP_PROM_PORT:-'20150'}
|
||||||
|
# Auth 服务的 Prometheus 端口
|
||||||
|
readonly AUTH_PROM_PORT=${AUTH_PROM_PORT:-'20160'}
|
||||||
|
# Push 服务的 Prometheus 端口
|
||||||
|
readonly PUSH_PROM_PORT=${PUSH_PROM_PORT:-'20170'}
|
||||||
|
# Conversation 服务的 Prometheus 端口
|
||||||
|
readonly CONVERSATION_PROM_PORT=${CONVERSATION_PROM_PORT:-'20230'}
|
||||||
|
# RTC 服务的 Prometheus 端口
|
||||||
|
readonly RTC_PROM_PORT=${RTC_PROM_PORT:-'21300'}
|
||||||
|
# Third 服务的 Prometheus 端口
|
||||||
|
readonly THIRD_PROM_PORT=${THIRD_PROM_PORT:-'21301'}
|
||||||
|
|
||||||
# Message Transfer 服务的 Prometheus 端口列表
|
# Message Transfer 服务的 Prometheus 端口列表
|
||||||
readonly MSG_TRANSFER_PROM_PORT=${MSG_TRANSFER_PROM_PORT:-'21400, 21401, 21402, 21403'}
|
readonly MSG_TRANSFER_PROM_PORT=${MSG_TRANSFER_PROM_PORT:-'21400, 21401, 21402, 21403'}
|
||||||
|
|
||||||
###################### OpenIM openim-api ######################
|
###################### OpenIM openim-api ######################
|
||||||
def "OPENIM_API_HOST" "127.0.0.1"
|
def "OPENIM_API_HOST" "127.0.0.1"
|
||||||
def "OPENIM_API_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-api" # OpenIM openim-api 二进制文件路径
|
def "OPENIM_API_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-api" # OpenIM openim-api 二进制文件路径
|
||||||
def "OPENIM_API_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-api 配置文件路径
|
def "OPENIM_API_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-api 配置文件路径
|
||||||
def "OPENIM_API_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-api" # OpenIM openim-api 日志存储路径
|
def "OPENIM_API_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-api" # OpenIM openim-api 日志存储路径
|
||||||
def "OPENIM_API_LOG_LEVEL" "info" # OpenIM openim-api 日志级别
|
def "OPENIM_API_LOG_LEVEL" "info" # OpenIM openim-api 日志级别
|
||||||
def "OPENIM_API_LOG_MAX_SIZE" "100" # OpenIM openim-api 日志最大大小(MB)
|
def "OPENIM_API_LOG_MAX_SIZE" "100" # OpenIM openim-api 日志最大大小(MB)
|
||||||
@ -260,7 +353,7 @@ def "OPENIM_API_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-ap
|
|||||||
###################### OpenIM openim-cmdutils ######################
|
###################### OpenIM openim-cmdutils ######################
|
||||||
def "OPENIM_CMDUTILS_HOST" "127.0.0.1"
|
def "OPENIM_CMDUTILS_HOST" "127.0.0.1"
|
||||||
def "OPENIM_CMDUTILS_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-cmdutils" # OpenIM openim-cmdutils 二进制文件路径
|
def "OPENIM_CMDUTILS_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-cmdutils" # OpenIM openim-cmdutils 二进制文件路径
|
||||||
def "OPENIM_CMDUTILS_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-cmdutils 配置文件路径
|
def "OPENIM_CMDUTILS_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-cmdutils 配置文件路径
|
||||||
def "OPENIM_CMDUTILS_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-cmdutils" # OpenIM openim-cmdutils 日志存储路径
|
def "OPENIM_CMDUTILS_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-cmdutils" # OpenIM openim-cmdutils 日志存储路径
|
||||||
def "OPENIM_CMDUTILS_LOG_LEVEL" "info" # OpenIM openim-cmdutils 日志级别
|
def "OPENIM_CMDUTILS_LOG_LEVEL" "info" # OpenIM openim-cmdutils 日志级别
|
||||||
def "OPENIM_CMDUTILS_LOG_MAX_SIZE" "100" # OpenIM openim-cmdutils 日志最大大小(MB)
|
def "OPENIM_CMDUTILS_LOG_MAX_SIZE" "100" # OpenIM openim-cmdutils 日志最大大小(MB)
|
||||||
@ -272,7 +365,7 @@ def "OPENIM_CMDUTILS_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM
|
|||||||
###################### OpenIM openim-crontask ######################
|
###################### OpenIM openim-crontask ######################
|
||||||
def "OPENIM_CRONTASK_HOST" "127.0.0.1"
|
def "OPENIM_CRONTASK_HOST" "127.0.0.1"
|
||||||
def "OPENIM_CRONTASK_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-crontask" # OpenIM openim-crontask 二进制文件路径
|
def "OPENIM_CRONTASK_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-crontask" # OpenIM openim-crontask 二进制文件路径
|
||||||
def "OPENIM_CRONTASK_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-crontask 配置文件路径
|
def "OPENIM_CRONTASK_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-crontask 配置文件路径
|
||||||
def "OPENIM_CRONTASK_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-crontask" # OpenIM openim-crontask 日志存储路径
|
def "OPENIM_CRONTASK_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-crontask" # OpenIM openim-crontask 日志存储路径
|
||||||
def "OPENIM_CRONTASK_LOG_LEVEL" "info" # OpenIM openim-crontask 日志级别
|
def "OPENIM_CRONTASK_LOG_LEVEL" "info" # OpenIM openim-crontask 日志级别
|
||||||
def "OPENIM_CRONTASK_LOG_MAX_SIZE" "100" # OpenIM openim-crontask 日志最大大小(MB)
|
def "OPENIM_CRONTASK_LOG_MAX_SIZE" "100" # OpenIM openim-crontask 日志最大大小(MB)
|
||||||
@ -299,7 +392,7 @@ readonly OPENIM_MSGGATEWAY_NUM=${OPENIM_MSGGATEWAY_NUM:-'4'}
|
|||||||
###################### OpenIM openim-msgtransfer ######################
|
###################### OpenIM openim-msgtransfer ######################
|
||||||
def "OPENIM_MSGTRANSFER_HOST" "127.0.0.1"
|
def "OPENIM_MSGTRANSFER_HOST" "127.0.0.1"
|
||||||
def "OPENIM_MSGTRANSFER_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-msgtransfer" # OpenIM openim-msgtransfer 二进制文件路径
|
def "OPENIM_MSGTRANSFER_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-msgtransfer" # OpenIM openim-msgtransfer 二进制文件路径
|
||||||
def "OPENIM_MSGTRANSFER_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-msgtransfer 配置文件路径
|
def "OPENIM_MSGTRANSFER_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-msgtransfer 配置文件路径
|
||||||
def "OPENIM_MSGTRANSFER_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-msgtransfer" # OpenIM openim-msgtransfer 日志存储路径
|
def "OPENIM_MSGTRANSFER_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-msgtransfer" # OpenIM openim-msgtransfer 日志存储路径
|
||||||
def "OPENIM_MSGTRANSFER_LOG_LEVEL" "info" # OpenIM openim-msgtransfer 日志级别
|
def "OPENIM_MSGTRANSFER_LOG_LEVEL" "info" # OpenIM openim-msgtransfer 日志级别
|
||||||
def "OPENIM_MSGTRANSFER_LOG_MAX_SIZE" "100" # OpenIM openim-msgtransfer 日志最大大小(MB)
|
def "OPENIM_MSGTRANSFER_LOG_MAX_SIZE" "100" # OpenIM openim-msgtransfer 日志最大大小(MB)
|
||||||
@ -311,7 +404,7 @@ def "OPENIM_MSGTRANSFER_LOG_WITH_STACK" "${LOG_WITH_STACK}" #
|
|||||||
###################### OpenIM openim-push ######################
|
###################### OpenIM openim-push ######################
|
||||||
def "OPENIM_PUSH_HOST" "127.0.0.1"
|
def "OPENIM_PUSH_HOST" "127.0.0.1"
|
||||||
def "OPENIM_PUSH_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-push" # OpenIM openim-push 二进制文件路径
|
def "OPENIM_PUSH_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-push" # OpenIM openim-push 二进制文件路径
|
||||||
def "OPENIM_PUSH_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-push 配置文件路径
|
def "OPENIM_PUSH_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-push 配置文件路径
|
||||||
def "OPENIM_PUSH_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-push" # OpenIM openim-push 日志存储路径
|
def "OPENIM_PUSH_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-push" # OpenIM openim-push 日志存储路径
|
||||||
def "OPENIM_PUSH_LOG_LEVEL" "info" # OpenIM openim-push 日志级别
|
def "OPENIM_PUSH_LOG_LEVEL" "info" # OpenIM openim-push 日志级别
|
||||||
def "OPENIM_PUSH_LOG_MAX_SIZE" "100" # OpenIM openim-push 日志最大大小(MB)
|
def "OPENIM_PUSH_LOG_MAX_SIZE" "100" # OpenIM openim-push 日志最大大小(MB)
|
||||||
@ -323,7 +416,7 @@ def "OPENIM_PUSH_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-
|
|||||||
###################### OpenIM openim-rpc-auth ######################
|
###################### OpenIM openim-rpc-auth ######################
|
||||||
def "OPENIM_RPC_AUTH_HOST" "127.0.0.1"
|
def "OPENIM_RPC_AUTH_HOST" "127.0.0.1"
|
||||||
def "OPENIM_RPC_AUTH_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-auth" # OpenIM openim-rpc-auth 二进制文件路径
|
def "OPENIM_RPC_AUTH_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-auth" # OpenIM openim-rpc-auth 二进制文件路径
|
||||||
def "OPENIM_RPC_AUTH_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-auth 配置文件路径
|
def "OPENIM_RPC_AUTH_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-auth 配置文件路径
|
||||||
def "OPENIM_RPC_AUTH_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-auth" # OpenIM openim-rpc-auth 日志存储路径
|
def "OPENIM_RPC_AUTH_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-auth" # OpenIM openim-rpc-auth 日志存储路径
|
||||||
def "OPENIM_RPC_AUTH_LOG_LEVEL" "info" # OpenIM openim-rpc-auth 日志级别
|
def "OPENIM_RPC_AUTH_LOG_LEVEL" "info" # OpenIM openim-rpc-auth 日志级别
|
||||||
def "OPENIM_RPC_AUTH_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-auth 日志最大大小(MB)
|
def "OPENIM_RPC_AUTH_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-auth 日志最大大小(MB)
|
||||||
@ -335,7 +428,7 @@ def "OPENIM_RPC_AUTH_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM
|
|||||||
###################### OpenIM openim-rpc-conversation ######################
|
###################### OpenIM openim-rpc-conversation ######################
|
||||||
def "OPENIM_RPC_CONVERSATION_HOST" "127.0.0.1"
|
def "OPENIM_RPC_CONVERSATION_HOST" "127.0.0.1"
|
||||||
def "OPENIM_RPC_CONVERSATION_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-conversation" # OpenIM openim-rpc-conversation 二进制文件路径
|
def "OPENIM_RPC_CONVERSATION_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-conversation" # OpenIM openim-rpc-conversation 二进制文件路径
|
||||||
def "OPENIM_RPC_CONVERSATION_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-conversation 配置文件路径
|
def "OPENIM_RPC_CONVERSATION_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-conversation 配置文件路径
|
||||||
def "OPENIM_RPC_CONVERSATION_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-conversation" # OpenIM openim-rpc-conversation 日志存储路径
|
def "OPENIM_RPC_CONVERSATION_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-conversation" # OpenIM openim-rpc-conversation 日志存储路径
|
||||||
def "OPENIM_RPC_CONVERSATION_LOG_LEVEL" "info" # OpenIM openim-rpc-conversation 日志级别
|
def "OPENIM_RPC_CONVERSATION_LOG_LEVEL" "info" # OpenIM openim-rpc-conversation 日志级别
|
||||||
def "OPENIM_RPC_CONVERSATION_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-conversation 日志最大大小(MB)
|
def "OPENIM_RPC_CONVERSATION_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-conversation 日志最大大小(MB)
|
||||||
@ -347,7 +440,7 @@ def "OPENIM_RPC_CONVERSATION_LOG_WITH_STACK" "${LOG_WITH_STACK}"
|
|||||||
###################### OpenIM openim-rpc-friend ######################
|
###################### OpenIM openim-rpc-friend ######################
|
||||||
def "OPENIM_RPC_FRIEND_HOST" "127.0.0.1"
|
def "OPENIM_RPC_FRIEND_HOST" "127.0.0.1"
|
||||||
def "OPENIM_RPC_FRIEND_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-friend" # OpenIM openim-rpc-friend 二进制文件路径
|
def "OPENIM_RPC_FRIEND_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-friend" # OpenIM openim-rpc-friend 二进制文件路径
|
||||||
def "OPENIM_RPC_FRIEND_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-friend 配置文件路径
|
def "OPENIM_RPC_FRIEND_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-friend 配置文件路径
|
||||||
def "OPENIM_RPC_FRIEND_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-friend" # OpenIM openim-rpc-friend 日志存储路径
|
def "OPENIM_RPC_FRIEND_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-friend" # OpenIM openim-rpc-friend 日志存储路径
|
||||||
def "OPENIM_RPC_FRIEND_LOG_LEVEL" "info" # OpenIM openim-rpc-friend 日志级别
|
def "OPENIM_RPC_FRIEND_LOG_LEVEL" "info" # OpenIM openim-rpc-friend 日志级别
|
||||||
def "OPENIM_RPC_FRIEND_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-friend 日志最大大小(MB)
|
def "OPENIM_RPC_FRIEND_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-friend 日志最大大小(MB)
|
||||||
@ -359,7 +452,7 @@ def "OPENIM_RPC_FRIEND_LOG_WITH_STACK" "${LOG_WITH_STACK}" # Op
|
|||||||
###################### OpenIM openim-rpc-group ######################
|
###################### OpenIM openim-rpc-group ######################
|
||||||
def "OPENIM_RPC_GROUP_HOST" "127.0.0.1"
|
def "OPENIM_RPC_GROUP_HOST" "127.0.0.1"
|
||||||
def "OPENIM_RPC_GROUP_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-group" # OpenIM openim-rpc-group 二进制文件路径
|
def "OPENIM_RPC_GROUP_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-group" # OpenIM openim-rpc-group 二进制文件路径
|
||||||
def "OPENIM_RPC_GROUP_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-group 配置文件路径
|
def "OPENIM_RPC_GROUP_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-group 配置文件路径
|
||||||
def "OPENIM_RPC_GROUP_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-group" # OpenIM openim-rpc-group 日志存储路径
|
def "OPENIM_RPC_GROUP_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-group" # OpenIM openim-rpc-group 日志存储路径
|
||||||
def "OPENIM_RPC_GROUP_LOG_LEVEL" "info" # OpenIM openim-rpc-group 日志级别
|
def "OPENIM_RPC_GROUP_LOG_LEVEL" "info" # OpenIM openim-rpc-group 日志级别
|
||||||
def "OPENIM_RPC_GROUP_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-group 日志最大大小(MB)
|
def "OPENIM_RPC_GROUP_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-group 日志最大大小(MB)
|
||||||
@ -371,7 +464,7 @@ def "OPENIM_RPC_GROUP_LOG_WITH_STACK" "${LOG_WITH_STACK}" # Open
|
|||||||
###################### OpenIM openim-rpc-msg ######################
|
###################### OpenIM openim-rpc-msg ######################
|
||||||
def "OPENIM_RPC_MSG_HOST" "127.0.0.1"
|
def "OPENIM_RPC_MSG_HOST" "127.0.0.1"
|
||||||
def "OPENIM_RPC_MSG_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-msg" # OpenIM openim-rpc-msg 二进制文件路径
|
def "OPENIM_RPC_MSG_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-msg" # OpenIM openim-rpc-msg 二进制文件路径
|
||||||
def "OPENIM_RPC_MSG_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-msg 配置文件路径
|
def "OPENIM_RPC_MSG_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-msg 配置文件路径
|
||||||
def "OPENIM_RPC_MSG_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-msg" # OpenIM openim-rpc-msg 日志存储路径
|
def "OPENIM_RPC_MSG_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-msg" # OpenIM openim-rpc-msg 日志存储路径
|
||||||
def "OPENIM_RPC_MSG_LOG_LEVEL" "info" # OpenIM openim-rpc-msg 日志级别
|
def "OPENIM_RPC_MSG_LOG_LEVEL" "info" # OpenIM openim-rpc-msg 日志级别
|
||||||
def "OPENIM_RPC_MSG_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-msg 日志最大大小(MB)
|
def "OPENIM_RPC_MSG_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-msg 日志最大大小(MB)
|
||||||
@ -383,7 +476,7 @@ def "OPENIM_RPC_MSG_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM o
|
|||||||
###################### OpenIM openim-rpc-third ######################
|
###################### OpenIM openim-rpc-third ######################
|
||||||
def "OPENIM_RPC_THIRD_HOST" "127.0.0.1"
|
def "OPENIM_RPC_THIRD_HOST" "127.0.0.1"
|
||||||
def "OPENIM_RPC_THIRD_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-third" # OpenIM openim-rpc-third 二进制文件路径
|
def "OPENIM_RPC_THIRD_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-third" # OpenIM openim-rpc-third 二进制文件路径
|
||||||
def "OPENIM_RPC_THIRD_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-third 配置文件路径
|
def "OPENIM_RPC_THIRD_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-third 配置文件路径
|
||||||
def "OPENIM_RPC_THIRD_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-third" # OpenIM openim-rpc-third 日志存储路径
|
def "OPENIM_RPC_THIRD_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-third" # OpenIM openim-rpc-third 日志存储路径
|
||||||
def "OPENIM_RPC_THIRD_LOG_LEVEL" "info" # OpenIM openim-rpc-third 日志级别
|
def "OPENIM_RPC_THIRD_LOG_LEVEL" "info" # OpenIM openim-rpc-third 日志级别
|
||||||
def "OPENIM_RPC_THIRD_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-third 日志最大大小(MB)
|
def "OPENIM_RPC_THIRD_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-third 日志最大大小(MB)
|
||||||
@ -395,7 +488,7 @@ def "OPENIM_RPC_THIRD_LOG_WITH_STACK" "${LOG_WITH_STACK}" # Open
|
|||||||
###################### OpenIM openim-rpc-user ######################
|
###################### OpenIM openim-rpc-user ######################
|
||||||
def "OPENIM_RPC_USER_HOST" "127.0.0.1"
|
def "OPENIM_RPC_USER_HOST" "127.0.0.1"
|
||||||
def "OPENIM_RPC_USER_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-user" # OpenIM openim-rpc-user 二进制文件路径
|
def "OPENIM_RPC_USER_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-user" # OpenIM openim-rpc-user 二进制文件路径
|
||||||
def "OPENIM_RPC_USER_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-user 配置文件路径
|
def "OPENIM_RPC_USER_CONFIG" ""${OPENIM_ROOT}"/config/" # OpenIM openim-rpc-user 配置文件路径
|
||||||
def "OPENIM_RPC_USER_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-user" # OpenIM openim-rpc-user 日志存储路径
|
def "OPENIM_RPC_USER_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-user" # OpenIM openim-rpc-user 日志存储路径
|
||||||
def "OPENIM_RPC_USER_LOG_LEVEL" "info" # OpenIM openim-rpc-user 日志级别
|
def "OPENIM_RPC_USER_LOG_LEVEL" "info" # OpenIM openim-rpc-user 日志级别
|
||||||
def "OPENIM_RPC_USER_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-user 日志最大大小(MB)
|
def "OPENIM_RPC_USER_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-user 日志最大大小(MB)
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user