mirror of
https://github.com/openimsdk/open-im-server.git
synced 2026-05-08 02:55:58 +08:00
feat: Add OpenIM server, environment support for Docker Compose, and Kubernetes deployment. (#1559)
* feat: add openim server code Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add openim env Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add openim mongo and redis env Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add zk and redis mongo env Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add kafka and redis mongo env Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add openim docker Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add openim docker Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add openim docker Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add openim copyright Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * fix: docker compose Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * fix: remove openim chat config file Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add openim config set Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add openim config set Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * fix: fix Security vulnerability Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * fix: fix Security vulnerability Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * fix: docker compose Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * Update kubernetes.go * Update discoveryregister.go * fix: copyright-add Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> --------- Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
This commit is contained in:
@@ -33,8 +33,8 @@ openim::log::info "\n# Begin to check all openim service"
|
||||
# OpenIM status
|
||||
# Elegant printing function
|
||||
print_services_and_ports() {
|
||||
local -n service_names=$1
|
||||
local -n service_ports=$2
|
||||
declare -g service_names=("${!1}")
|
||||
declare -g service_ports=("${!2}")
|
||||
|
||||
echo "+-------------------------+----------+"
|
||||
echo "| Service Name | Port |"
|
||||
|
||||
@@ -102,7 +102,7 @@ print_color "Deleted Files: ${deleted_files}" "${BACKGROUND_GREEN}"
|
||||
if [[ ! $local_branch =~ $valid_branch_regex ]]
|
||||
then
|
||||
printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex.
|
||||
Your commit will be rejected. You should rename your branch to a valid name(feat/name OR bug/name) and try again."
|
||||
Your commit will be rejected. You should rename your branch to a valid name(feat/name OR fix/name) and try again."
|
||||
printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
+105
-58
@@ -1,4 +1,17 @@
|
||||
#!/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.
|
||||
|
||||
# This script automatically initializes various configuration files and can generate example files.
|
||||
|
||||
@@ -31,6 +44,20 @@ declare -A EXAMPLES=(
|
||||
["${OPENIM_ROOT}/deployments/templates/alertmanager.yml"]="${OPENIM_ROOT}/config/templates/alertmanager.yml.template"
|
||||
)
|
||||
|
||||
# Templates for config Copy file
|
||||
declare -A COPY_TEMPLATES=(
|
||||
["${OPENIM_ROOT}/deployments/templates/email.tmpl"]="${OPENIM_ROOT}/config/email.tmpl"
|
||||
["${OPENIM_ROOT}/deployments/templates/instance-down-rules.yml"]="${OPENIM_ROOT}/config/instance-down-rules.yml"
|
||||
["${OPENIM_ROOT}/deployments/templates/notification.yaml"]="${OPENIM_ROOT}/config/notification.yaml"
|
||||
)
|
||||
|
||||
# Templates for config Copy file
|
||||
declare -A COPY_EXAMPLES=(
|
||||
["${OPENIM_ROOT}/deployments/templates/email.tmpl"]="${OPENIM_ROOT}/config/templates/email.tmpl.template"
|
||||
["${OPENIM_ROOT}/deployments/templates/instance-down-rules.yml"]="${OPENIM_ROOT}/config/templates/instance-down-rules.yml.template"
|
||||
["${OPENIM_ROOT}/deployments/templates/notification.yaml"]="${OPENIM_ROOT}/config/templates/notification.yaml.template"
|
||||
)
|
||||
|
||||
# Command-line options
|
||||
FORCE_OVERWRITE=false
|
||||
SKIP_EXISTING=false
|
||||
@@ -50,84 +77,101 @@ show_help() {
|
||||
echo " --clean-examples Clean all example files"
|
||||
}
|
||||
|
||||
# Function to generate configuration files
|
||||
# Function to generate and copy configuration files
|
||||
generate_config_files() {
|
||||
# Handle TEMPLATES array
|
||||
for template in "${!TEMPLATES[@]}"; do
|
||||
local output_file="${TEMPLATES[$template]}"
|
||||
if [[ -f "${output_file}" ]]; then
|
||||
if [[ "${FORCE_OVERWRITE}" == true ]]; then
|
||||
openim::log::info "Force overwriting ${output_file}."
|
||||
elif [[ "${SKIP_EXISTING}" == true ]]; then
|
||||
openim::log::info "Skipping generation of ${output_file} as it already exists."
|
||||
continue
|
||||
else
|
||||
echo -n "File ${output_file} already exists. Overwrite? (Y/N): "
|
||||
read -r -n 1 REPLY
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
openim::log::info "Skipping generation of ${output_file}."
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if [[ "${SKIP_EXISTING}" == true ]]; then
|
||||
openim::log::info "Generating ${output_file} as it does not exist."
|
||||
fi
|
||||
fi
|
||||
process_file "$template" "$output_file" true
|
||||
done
|
||||
|
||||
openim::log::info "⌚ Working with template file: ${template} to generate ${output_file}..."
|
||||
if [[ ! -f "${OPENIM_ROOT}/scripts/genconfig.sh" ]]; then
|
||||
openim::log::error "genconfig.sh script not found"
|
||||
exit 1
|
||||
fi
|
||||
"${OPENIM_ROOT}/scripts/genconfig.sh" "${ENV_FILE}" "${template}" > "${output_file}" || {
|
||||
openim::log::error "Error processing template file ${template}"
|
||||
exit 1
|
||||
}
|
||||
sleep 0.5
|
||||
# Handle COPY_TEMPLATES array
|
||||
for template in "${!COPY_TEMPLATES[@]}"; do
|
||||
local output_file="${COPY_TEMPLATES[$template]}"
|
||||
process_file "$template" "$output_file" false
|
||||
done
|
||||
}
|
||||
|
||||
# Function to generate example files
|
||||
generate_example_files() {
|
||||
env_cmd="env -i"
|
||||
for var in "${!env_vars[@]}"; do
|
||||
env_cmd+=" $var='${env_vars[$var]}'"
|
||||
done
|
||||
|
||||
# Processing EXAMPLES array
|
||||
for template in "${!EXAMPLES[@]}"; do
|
||||
local example_file="${EXAMPLES[$template]}"
|
||||
if [[ -f "${example_file}" ]]; then
|
||||
if [[ "${FORCE_OVERWRITE}" == true ]]; then
|
||||
openim::log::info "Force overwriting example file: ${example_file}."
|
||||
elif [[ "${SKIP_EXISTING}" == true ]]; then
|
||||
openim::log::info "Skipping generation of example file: ${example_file} as it already exists."
|
||||
continue
|
||||
else
|
||||
echo -n "Example file ${example_file} already exists. Overwrite? (Y/N): "
|
||||
read -r -n 1 REPLY
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
openim::log::info "Skipping generation of example file: ${example_file}."
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
elif [[ "${SKIP_EXISTING}" == true ]]; then
|
||||
openim::log::info "Generating example file: ${example_file} as it does not exist."
|
||||
fi
|
||||
process_file "$template" "$example_file" true
|
||||
done
|
||||
|
||||
openim::log::info "⌚ Working with template file: ${template} to generate example file: ${example_file}..."
|
||||
# Processing COPY_EXAMPLES array
|
||||
for template in "${!COPY_EXAMPLES[@]}"; do
|
||||
local example_file="${COPY_EXAMPLES[$template]}"
|
||||
process_file "$template" "$example_file" false
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
# Function to process a single file, either by generating or copying
|
||||
process_file() {
|
||||
local template=$1
|
||||
local output_file=$2
|
||||
local use_genconfig=$3
|
||||
|
||||
if [[ -f "${output_file}" ]]; then
|
||||
if [[ "${FORCE_OVERWRITE}" == true ]]; then
|
||||
openim::log::info "Force overwriting ${output_file}."
|
||||
elif [[ "${SKIP_EXISTING}" == true ]]; then
|
||||
openim::log::info "Skipping generation of ${output_file} as it already exists."
|
||||
return
|
||||
else
|
||||
echo -n "File ${output_file} already exists. Overwrite? (Y/N): "
|
||||
read -r -n 1 REPLY
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
openim::log::info "Skipping generation of ${output_file}."
|
||||
return
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if [[ "${SKIP_EXISTING}" == true ]]; then
|
||||
openim::log::info "Generating ${output_file} as it does not exist."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$use_genconfig" == true ]]; then
|
||||
openim::log::info "⌚ Working with template file: ${template} to generate ${output_file}..."
|
||||
if [[ ! -f "${OPENIM_ROOT}/scripts/genconfig.sh" ]]; then
|
||||
openim::log::error "genconfig.sh script not found"
|
||||
exit 1
|
||||
fi
|
||||
"${OPENIM_ROOT}/scripts/genconfig.sh" "${ENV_FILE}" "${template}" > "${example_file}" || {
|
||||
openim::log::error "Error processing template file ${template}"
|
||||
if [[ -n "${env_cmd}" ]]; then
|
||||
eval "$env_cmd ${OPENIM_ROOT}/scripts/genconfig.sh '${ENV_FILE}' '${template}' > '${output_file}'" || {
|
||||
openim::log::error "Error processing template file ${template}"
|
||||
exit 1
|
||||
}
|
||||
else
|
||||
"${OPENIM_ROOT}/scripts/genconfig.sh" "${ENV_FILE}" "${template}" > "${output_file}" || {
|
||||
openim::log::error "Error processing template file ${template}"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
else
|
||||
openim::log::info "📋 Copying ${template} to ${output_file}..."
|
||||
cp "${template}" "${output_file}" || {
|
||||
openim::log::error "Error copying template file ${template}"
|
||||
exit 1
|
||||
}
|
||||
sleep 0.5
|
||||
done
|
||||
fi
|
||||
|
||||
sleep 0.5
|
||||
}
|
||||
|
||||
|
||||
# Function to clean configuration files
|
||||
clean_config_files() {
|
||||
for output_file in "${TEMPLATES[@]}"; do
|
||||
local all_templates=("${TEMPLATES[@]}" "${COPY_TEMPLATES[@]}")
|
||||
|
||||
for output_file in "${all_templates[@]}"; do
|
||||
if [[ -f "${output_file}" ]]; then
|
||||
rm -f "${output_file}"
|
||||
openim::log::info "Removed configuration file: ${output_file}"
|
||||
@@ -137,7 +181,10 @@ clean_config_files() {
|
||||
|
||||
# Function to clean example files
|
||||
clean_example_files() {
|
||||
for example_file in "${EXAMPLES[@]}"; do
|
||||
# 合并 EXAMPLES 和 COPY_EXAMPLES 数组
|
||||
local all_examples=("${EXAMPLES[@]}" "${COPY_EXAMPLES[@]}")
|
||||
|
||||
for example_file in "${all_examples[@]}"; do
|
||||
if [[ -f "${example_file}" ]]; then
|
||||
rm -f "${example_file}"
|
||||
openim::log::info "Removed example file: ${example_file}"
|
||||
|
||||
Reference in New Issue
Block a user