From 3599d4b7efa5ccfd8ba31f002e0ddb873c59e1a5 Mon Sep 17 00:00:00 2001 From: "Xinwei Xiong(cubxxw-openim)" <3293172751nss@gmail.com> Date: Mon, 21 Aug 2023 12:11:09 +0800 Subject: [PATCH] feat: optimize dockerfile option Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> --- .env | 20 ++++++-- .github/workflows/openimci.yml | 2 +- config/config.yaml | 75 ++++++++++++++++------------- scripts/README.md | 2 +- scripts/docker-check-service.sh | 7 +-- scripts/docker-start-all.sh | 4 +- scripts/install_im_server.sh | 85 --------------------------------- scripts/make-rules/golang.mk | 2 +- 8 files changed, 65 insertions(+), 132 deletions(-) delete mode 100755 scripts/install_im_server.sh diff --git a/.env b/.env index 412b75076..2affa3c34 100644 --- a/.env +++ b/.env @@ -1,5 +1,19 @@ +# 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. + USER=root PASSWORD=openIM123 -MINIO_ENDPOINT=http://127.0.0.1:10005 -API_URL=http://127.0.0.1:10002/object/ -DATA_DIR=./ \ No newline at end of file +MINIO_ENDPOINT=http://14.155.127.181:10005 +API_URL=http://14.155.127.181:10002/object/ +DATA_DIR=/root/workspaces/openim/openim-server diff --git a/.github/workflows/openimci.yml b/.github/workflows/openimci.yml index cafbb5056..7611dd612 100644 --- a/.github/workflows/openimci.yml +++ b/.github/workflows/openimci.yml @@ -49,7 +49,7 @@ jobs: strategy: matrix: go_version: ["1.18","1.19","1.20","1.21"] - os: [ubuntu-latest,macos-latest] + os: [ubuntu-latest] steps: - name: Set up Go ${{ matrix.go_version }} diff --git a/config/config.yaml b/config/config.yaml index 27f01fb8b..8e88e5019 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -1,6 +1,6 @@ # Copyright © 2023 OpenIM. All rights reserved. # -# Licensed under the Apache License, Version 2.0 (the "License"); +# 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 # @@ -13,7 +13,10 @@ # limitations under the License. # ----------------------------------------------------------------- -# Infrastructural configurations, please modify based on your setup +# TODO: This config file is the template file +# --| source: deployments/templates/openim.yaml +# --| env: scripts/install/environment +# --| target: config/config.yaml # ----------------------------------------------------------------- ###################### Zookeeper ###################### @@ -26,8 +29,8 @@ zookeeper: schema: openim address: [ 127.0.0.1:2181 ] - username: - password: + username: '' + password: '' ###################### Mysql ###################### # MySQL configuration @@ -57,23 +60,23 @@ mysql: # Default MongoDB database name # Maximum connection pool size mongo: - uri: + uri: '' address: [ 127.0.0.1:37017 ] database: openIM_v3 username: root password: openIM123 maxPoolSize: 100 -###################### Redis ###################### +###################### Redis configuration information ###################### # Redis configuration # # Username is required only for Redis version 6.0+ redis: address: [ 127.0.0.1:16379 ] - username: + username: '' password: openIM123 -###################### Kafka ###################### +###################### Kafka configuration information ###################### # Kafka configuration # # Kafka username @@ -81,8 +84,8 @@ redis: # It's not recommended to modify this topic name # Consumer group ID, it's not recommended to modify kafka: - username: - password: + username: '' + password: '' addr: [ 127.0.0.1:9092 ] latestMsgToRedis: topic: "latestMsgToRedis" @@ -96,16 +99,16 @@ kafka: msgToMySql: mysql msgToPush: push -###################### RPC ###################### +###################### RPC configuration information ###################### # 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: + registerIP: '' listenIP: 0.0.0.0 -###################### API ###################### +###################### API configuration information ###################### # API configuration # # API service port @@ -114,7 +117,7 @@ api: openImApiPort: [ 10002 ] listenIP: 0.0.0.0 -###################### Gateway ###################### +###################### Object configuration information ###################### # Object storage configuration # # Use minio for object storage @@ -129,32 +132,34 @@ api: # minio.signEndpoint is minio public network address object: enable: "minio" - apiURL: "http://127.0.0.1:10002" + apiURL: "http://127.0.0.1:10002/object/" minio: bucket: "openim" - endpoint: "http://127.0.0.1:10005" + endpoint: "http://14.155.127.181:10005" accessKeyID: "root" secretAccessKey: "openIM123" - sessionToken: "" - signEndpoint: "http://127.0.0.1:10005" + sessionToken: '' + signEndpoint: "http://14.155.127.181:10005" cos: - bucketURL: "https://temp-1252357374.cos.ap-chengdu.myqcloud.com" - secretID: "" - secretKey: "" - sessionToken: "" + 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: "" + accessKeyID: '' + accessKeySecret: '' + sessionToken: '' + +###################### RPC Port Configuration ###################### # 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: +rpcPort: openImUserPort: [ 10110 ] openImFriendPort: [ 10120 ] openImMessagePort: [ 10130 ] @@ -165,6 +170,7 @@ rpcPort: openImConversationPort: [ 10180 ] openImThirdPort: [ 10190 ] +###################### RPC Register Name Configuration ###################### # RPC service names for registration, it's not recommended to modify these rpcRegisterName: openImUserName: User @@ -177,6 +183,7 @@ rpcRegisterName: openImConversationName: Conversation openImThirdName: Third +###################### Log Configuration ###################### # Log configuration # # Storage directory @@ -187,14 +194,15 @@ rpcRegisterName: # Whether to output in json format # Whether to include stack trace in logs log: - storageLocation: ../../../../../logs/ + storageLocation: /root/workspaces/openim/openim-server/logs/ rotationTime: 24 remainRotationCount: 2 remainLogLevel: 6 - isStdout: false + isStdout: false isJson: false withStack: false +###################### Variables definition ###################### # Long connection server configuration # # Websocket port for msg_gateway @@ -224,7 +232,7 @@ push: channelID: "" channelName: "" fcm: - serviceAccount: "x.json" + serviceAccount: x.json jpns: appKey: masterSecret: @@ -236,8 +244,8 @@ push: # Built-in app manager user IDs # Built-in app manager nicknames manager: - userID: [ "openIM123456","openIM654321","openIMAdmin" ] - nickname: [ "system1","system2", "system3" ] + 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 @@ -291,6 +299,7 @@ iosPush: badgeCount: true production: false +###################### Third-party service configuration ###################### # Callback configuration # # Callback URL @@ -360,7 +369,7 @@ callback: failedContinue: true ###################### Prometheus ###################### -# Prometheus configuration +# Prometheus configuration for various services # 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: @@ -375,4 +384,4 @@ prometheus: conversationPrometheusPort: [ 20230 ] rtcPrometheusPort: [ 21300 ] thirdPrometheusPort: [ 21301 ] - messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ] \ No newline at end of file + messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ] # List of ports diff --git a/scripts/README.md b/scripts/README.md index 6a4aec5b5..0be260558 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -53,7 +53,7 @@ scripts/ │ └── pre-push # Script to run before each push ├── init_pwd.sh # Script to initialize password ├── install_im_compose.sh # Script to install IM with Docker Compose -├── install_im_server.sh # Script to install IM server +├── install-im-server.sh # Script to install IM server ├── lib # Library scripts │ ├── color.sh # Script for console color manipulation │ ├── golang.sh # Script for golang related utility functions diff --git a/scripts/docker-check-service.sh b/scripts/docker-check-service.sh index 5388a3c51..c1fb94748 100755 --- a/scripts/docker-check-service.sh +++ b/scripts/docker-check-service.sh @@ -14,13 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -# 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" - -echo -e "${GREEN_PREFIX}=========> Check docker-compose status ${COLOR_SUFFIX} \n" +source "${OPENIM_ROOT}/scripts/install/common.sh" cd "$OPENIM_ROOT" diff --git a/scripts/docker-start-all.sh b/scripts/docker-start-all.sh index b2e68ed7a..a0adfdf0f 100755 --- a/scripts/docker-start-all.sh +++ b/scripts/docker-start-all.sh @@ -22,10 +22,10 @@ source "${OPENIM_ROOT}/scripts/install/common.sh" trap 'openim::util::onCtrlC' INT -nohup ${OPENIM_ROOT}/scripts/start-all.sh > ${LOG_FILE} 2>&1 & +nohup ${OPENIM_ROOT}/scripts/start-all.sh >> ${LOG_FILE} 2>&1 & sleep 15 -nohup ${OPENIM_ROOT}/scripts/check-all.sh > ${LOG_FILE} 2>&1 & +nohup ${OPENIM_ROOT}/scripts/check-all.sh >> ${LOG_FILE} 2>&1 & tail -f ${LOG_FILE} \ No newline at end of file diff --git a/scripts/install_im_server.sh b/scripts/install_im_server.sh deleted file mode 100755 index eab90831b..000000000 --- a/scripts/install_im_server.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/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. - - -# Common utilities, variables and checks for all build scripts. -set -o errexit -set -o nounset -set -o pipefail - -#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 - -# docker-compose.yaml file name -docker_compose_file_name="docker-compose.yaml" - -trap 'onCtrlC' INT -function onCtrlC () { - #Capture CTRL+C, terminate the background process of the program when the script is terminated in the form of ctrl+c - kill -9 ${do_sth_pid} ${progress_pid} - echo - echo 'Ctrl+C is captured' - exit 1 -} - -# Load environment variables from .env file -source ${OPENIM_ROOT}/.env - -# Get the public internet IP address -internet_ip=$(curl ifconfig.me -s) -echo -e "${PURPLE_PREFIX}=========> Your public internet IP address is ${internet_ip} ${COLOR_SUFFIX} \n" - -# Replace local IP address with the public IP address in .env file -if [ $API_URL == "http://127.0.0.1:10002/object/" ]; then - sed -i "s/127.0.0.1/${internet_ip}/" ${OPENIM_ROOT}/.env -fi - -if [ $MINIO_ENDPOINT == "http://127.0.0.1:10005" ]; then - sed -i "s/127.0.0.1/${internet_ip}/" ${OPENIM_ROOT}/.env -fi - - - - -echo -e "${PURPLE_PREFIX}=========> Your minio endpoint is ${MINIO_ENDPOINT} ${COLOR_SUFFIX} \n" - -# Change directory to scripts folder - -chmod +x ${SCRIPTS_ROOT}/*.sh - -# Execute necessary scripts -echo -e "${PURPLE_PREFIX}=========> init_pwd.sh ${COLOR_SUFFIX} \n" - -${SCRIPTS_ROOT}/init_pwd.sh - -echo -e "${PURPLE_PREFIX}=========> env_check.sh ${COLOR_SUFFIX} \n" - -${SCRIPTS_ROOT}/env_check.sh - -# Go back to the previous directory -cd ${OPENIM_ROOT} - -# Check if docker-compose command is available -if command -v docker-compose &> /dev/null -then - docker-compose up -d -else - docker compose up -d -fi - -${SCRIPTS_ROOT}/docker-check-service.sh diff --git a/scripts/make-rules/golang.mk b/scripts/make-rules/golang.mk index 929a9912d..bf5ecdc86 100644 --- a/scripts/make-rules/golang.mk +++ b/scripts/make-rules/golang.mk @@ -156,7 +156,7 @@ go.build.%: .PHONY: go.install go.install: @echo "===========> Installing deployment openim" - @$(ROOT_DIR)/scripts/install_im_server.sh + @$(ROOT_DIR)/scripts/install-im-server.sh ## go.multiarch: Build multi-arch binaries .PHONY: go.build.multiarch