You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Open-IM-Server/openim-chat/scripts/docker_start_all.sh

102 lines
2.9 KiB

#!/usr/bin/env bash
# Copyright © 2023 OpenIM open source community. 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.
#!/usr/bin/env bash
# Include shell font styles and some basic information
SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
source "$SCRIPTS_ROOT/style_info.sh"
source "$SCRIPTS_ROOT/path_info.sh"
source "$SCRIPTS_ROOT/function.sh"
printf "${YELLOW_PREFIX}=======>SCRIPTS_ROOT=%s${COLOR_SUFFIX}\n" "$SCRIPTS_ROOT"
printf "${YELLOW_PREFIX}=======>OPENIM_ROOT=%s${COLOR_SUFFIX}\n" "$OPENIM_ROOT"
printf "${YELLOW_PREFIX}=======>pwd=%s${COLOR_SUFFIX}\n" "$PWD"
bin_dir="$BIN_DIR"
logs_dir="$SCRIPTS_ROOT/../logs"
printf "${YELLOW_PREFIX}=======>bin_dir=%s${COLOR_SUFFIX}\n" "$bin_dir"
printf "${YELLOW_PREFIX}=======>logs_dir=%s${COLOR_SUFFIX}\n" "$logs_dir"
printf "${YELLOW_PREFIX}=======>sdk_db_dir=%s${COLOR_SUFFIX}\n" "$sdk_db_dir"
# Service filenames
service_filenames=(
chat-api
admin-api
#rpc
admin-rpc
chat-rpc
)
# Service config port names
service_port_names=(
openImChatApiPort
openImAdminApiPort
#api port name
openImAdminPort
openImChatPort
)
service_prometheus_port_names=()
cd "$SCRIPTS_ROOT"
# Function to kill a service
kill_service() {
local service_name=$1
local pid=$(pgrep -f "$service_name")
if [ -n "$pid" ]; then
echo "$service_name service has been started, pid: $pid"
echo "Killing the service $service_name, pid: $pid"
killall "$service_name"
sleep 0.5
fi
}
for ((i = 0; i < ${#service_filenames[*]}; i++)); do
service_name="${service_filenames[$i]}"
kill_service "$service_name"
cd "$SCRIPTS_ROOT"
# Get the rpc ports from the configuration file
readarray -t portList < "$config_path"
service_ports=()
for line in "${portList[@]}"; do
if [[ $line == *"${service_port_names[$i]}"* ]]; then
port=$(echo "$line" | awk -F ':' '{print $NF}')
service_ports+=("$port")
fi
done
# Start related rpc services based on the number of ports
for port in "${service_ports[@]}"; do
# Start the service in the background
cmd="$bin_dir/$service_name -port $port --config_folder_path $config_path"
if [[ $i -eq 0 || $i -eq 1 ]]; then
cmd="$bin_dir/$service_name -port $port --config_folder_path $config_path"
fi
echo "$cmd"
nohup "$cmd" >> "${logs_dir}/openIM.log" 2>&1 &
sleep 1
done
done
sleep infinity