增加k8s部署方案

pull/172/head
mashouyue's m1max 4 years ago
parent 13efbf5f98
commit 8631c90290

@ -0,0 +1,3 @@
*Open-IM-SDK-Core.tar.gz
*Open-IM-Server.tar.gz
*development.yaml

@ -0,0 +1,32 @@
# openim开源项目k8s部署
## 需要的环境
MacOS OR Linux
## 需要安装的软件
- wget
- docker
- kubectl
## k8s配置
编辑 setting.env
```shell
#docker镜像tag前缀
DOCKER_REGISTRY_ADDR="harbor.local/"
#nodePort暴露端口号 api
NODE_PORT_API="10100"
#nodePort暴露端口号 msg_gateway
NODE_PORT_MSG_GATEWAY="10101"
#nodePort暴露端口号 sdk_server
NODE_PORT_SDK_SERVER="10102"
#nodePort暴露端口号 demo
NODE_PORT_DEMO="10103"
#部署在哪个命名空间
K8S_NAMESPACE="openim"
```
## 单个服务部署
```shell
cd $服务路径 && \
bash build.sh
```
## 全部部署
```shell
go run .
```

@ -0,0 +1,111 @@
package main
import (
"bufio"
"fmt"
"golang.org/x/text/encoding/simplifiedchinese"
"io"
"os"
"os/exec"
"path"
"strings"
)
// docker rm -f registry-srv && rm -rf /root/docker/dockerRegistry && mkdir -p dockerRegistry && docker run -d -p 80:5000 --restart=always --name registry-srv -v /root/docker/dockerRegistry:/var/lib/registry registry
func main() {
var paths = map[string]string{}
pwd, _ := os.Getwd()
readDir, _ := os.ReadDir(".")
for _, dir := range readDir {
if dir.IsDir() {
if strings.HasPrefix(dir.Name(), "open_im") {
paths[path.Join(pwd, dir.Name())] = ""
}
}
}
for dir := range paths {
//execCommand("docker", "rmi", "$(docker images -a | awk '/<none>/{print $3}')")
/*go */func(dir string) {
fmt.Printf("\n----------------------------------------%s构建开始----------------------------------------\n", dir)
execCommand("bash", "-c", fmt.Sprintf(""+
"cd %s"+
" && "+
"bash build.sh", dir))
fmt.Printf("\n----------------------------------------%s构建完成----------------------------------------\n", dir)
delete(paths, dir)
}(dir)
}
for {
if len(paths) == 0 {
fmt.Println("----------------------------------------全部构建成功----------------------------------------")
os.Exit(0)
}
}
}
//封装一个函数来执行命令
func execCommand(commandName string, params ...string) bool {
//执行命令
cmd := exec.Command(commandName, params...)
//显示运行的命令
fmt.Println(cmd.Args)
stdout, err := cmd.StdoutPipe()
errReader, errr := cmd.StderrPipe()
if errr != nil {
fmt.Println("err:" + errr.Error())
}
//开启错误处理
go handlerErr(errReader)
if err != nil {
fmt.Println(err)
return false
}
cmd.Start()
in := bufio.NewScanner(stdout)
for in.Scan() {
cmdRe := ConvertByte2String(in.Bytes(), "UTF-8")
fmt.Println(cmdRe)
}
cmd.Wait()
cmd.Wait()
return true
}
//开启一个协程来错误
func handlerErr(errReader io.ReadCloser) {
in := bufio.NewScanner(errReader)
for in.Scan() {
cmdRe := ConvertByte2String(in.Bytes(), "UTF-8")
fmt.Errorf(cmdRe)
}
}
type Charset string
const (
UTF8 = Charset("UTF-8")
GB18030 = Charset("GB18030")
)
//对字符进行转码
func ConvertByte2String(byte []byte, charset Charset) string {
var str string
switch charset {
case GB18030:
var decodeBytes, _ = simplifiedchinese.GB18030.NewDecoder().Bytes(byte)
str = string(decodeBytes)
case UTF8:
fallthrough
default:
str = string(byte)
}
return str
}

@ -0,0 +1,5 @@
module github.com/showurl/deploy-openim
go 1.17
require golang.org/x/text v0.3.7

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_admin_cms.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_admin_cms.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_admin_cms.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_admin_cms.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_admin_cms"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,46 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_admin_cms:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
rm -rf development.yaml
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成"
kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,92 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: admin-cms
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: admin-cms
workload.auth.cattle.io/workloadselector: statefulSet-openim-admin-cms
serviceName: admin-cms
template:
metadata:
labels:
app: admin-cms
workload.auth.cattle.io/workloadselector: statefulSet-openim-admin-cms
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p11000
protocol: TCP
containerPort: 11000
imagePullPolicy: Always
name: admin-cms
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: admin-cms
spec:
ports:
- name: p11000
port: 11000
protocol: TCP
targetPort: 11000
selector:
app: admin-cms
type: ClusterIP

@ -0,0 +1,36 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_admin_cms"
service_port_name="openImAdminCmsPort"
K8sServiceName="admin-cms"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_api.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_api.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_api.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_api.sh"]

@ -0,0 +1,25 @@
#!/bin/bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/open_im_api && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build open_im_api success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved open_im_api to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_api:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,94 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: api
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: api
workload.user.cattle.io/workloadselector: statefulSet-openim-api
serviceName: api
template:
metadata:
labels:
app: api
workload.user.cattle.io/workloadselector: statefulSet-openim-api
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
ports:
- name: p10000
protocol: TCP
containerPort: 10000
imagePullPolicy: Always
name: api
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: api
spec:
externalTrafficPolicy: Cluster
ports:
- name: p10000
nodePort: NODE_PORT_API
port: 10000
protocol: TCP
targetPort: 10000
selector:
app: api
type: NodePort

@ -0,0 +1,36 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_api"
service_port_name="openImApiPort"
K8sServiceName="api"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${service_filename} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_auth.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_auth.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_auth.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_auth.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_auth"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_auth:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,92 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: auth
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: auth
workload.auth.cattle.io/workloadselector: statefulSet-openim-auth
serviceName: auth
template:
metadata:
labels:
app: auth
workload.auth.cattle.io/workloadselector: statefulSet-openim-auth
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10600
protocol: TCP
containerPort: 10600
imagePullPolicy: Always
name: auth
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: auth
spec:
ports:
- name: p10600
port: 10600
protocol: TCP
targetPort: 10600
selector:
app: auth
type: ClusterIP

@ -0,0 +1,36 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_auth"
service_port_name="openImAuthPort"
K8sServiceName="auth"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_cms_api.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_cms_api.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_cms_api.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_cms_api.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_cms_api"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_cms_api:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,94 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: cms-api
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: cms-api
workload.user.cattle.io/workloadselector: statefulSet-openim-cms-api
serviceName: cms-api
template:
metadata:
labels:
app: cms-api
workload.user.cattle.io/workloadselector: statefulSet-openim-cms-api
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10000
protocol: TCP
containerPort: 10000
imagePullPolicy: Always
name: cms-api
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: cms-api
spec:
ports:
- name: p8000
port: 8000
protocol: TCP
targetPort: 8000
selector:
app: cms-api
type: ClusterIP

@ -0,0 +1,37 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_cms_api"
service_port_name="openImCmsApiPort"
K8sServiceName="cms-api"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
echo "$POD_IP $K8sServiceName">> /etc/hosts
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${service_filename} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_demo.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_demo.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_demo.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_demo.sh"]

@ -0,0 +1,28 @@
#!/bin/bash
serviceName="open_im_demo"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
sed -i 's#utils.ServerIP#"api"#g' /Open-IM-Server/internal/demo/register/login.go
sed -i 's#"Open_IM/pkg/utils"##g' /Open-IM-Server/internal/demo/register/login.go
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_demo:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,96 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: demo
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: demo
workload.user.cattle.io/workloadselector: statefulSet-openim-demo
serviceName: demo
template:
metadata:
labels:
app: demo
workload.user.cattle.io/workloadselector: statefulSet-openim-demo
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p42233
protocol: TCP
containerPort: 42233
imagePullPolicy: Always
name: demo
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: demo-remote
spec:
externalTrafficPolicy: Cluster
ports:
- name: p42233
nodePort: NODE_PORT_DEMO
port: 42233
protocol: TCP
targetPort: 42233
selector:
app: demo
type: NodePort

@ -0,0 +1,36 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
ulimit -n 200000
service_filename="open_im_demo"
K8sServiceName="demo"
binary_root="/Open-IM-Server/bin"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
switch=$(cat $config_path | grep demoswitch |awk -F '[:]' '{print $NF}')
if [ ${switch} != "true" ]; then
echo -e ${YELLOW_PREFIX}" demo service switch is false not start demo "${COLOR_SUFFIX}
exit 0
fi
list1=$(cat $config_path | grep openImDemoPort | awk -F '[:]' '{print $NF}')
list_to_string $list1
api_ports=($ports_array)
#Check if the service exists
#If it is exists,kill this process
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
if [ $check -ge 1 ]; then
oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
kill -9 ${oldPid}
fi
#Waiting port recycling
sleep 1
cd ${binary_root}
./${service_filename} -port ${api_ports[$i]}

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_friend.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_friend.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_friend.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_friend.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_friend"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_friend:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,94 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: friend
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: friend
workload.friend.cattle.io/workloadselector: statefulSet-openim-friend
serviceName: friend
template:
metadata:
labels:
app: friend
workload.friend.cattle.io/workloadselector: statefulSet-openim-friend
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10200
protocol: TCP
containerPort: 10200
imagePullPolicy: Always
name: friend
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: friend
spec:
ports:
- name: p10200
port: 10200
protocol: TCP
targetPort: 10200
selector:
app: friend
type: ClusterIP

@ -0,0 +1,36 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_friend"
service_port_name="openImFriendPort"
K8sServiceName="friend"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_group.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_group.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_group.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_group.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_group"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_group:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,94 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: group
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: group
workload.group.cattle.io/workloadselector: statefulSet-openim-group
serviceName: group
template:
metadata:
labels:
app: group
workload.group.cattle.io/workloadselector: statefulSet-openim-group
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10500
protocol: TCP
containerPort: 10500
imagePullPolicy: Always
name: group
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: group
spec:
ports:
- name: p10500
port: 10500
protocol: TCP
targetPort: 10500
selector:
app: group
type: ClusterIP

@ -0,0 +1,36 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_group"
service_port_name="openImGroupPort"
K8sServiceName="group"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_message_cms.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_message_cms.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_message_cms.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_message_cms.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_message_cms"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_message_cms:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,94 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: message-cms
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: message-cms
workload.auth.cattle.io/workloadselector: statefulSet-openim-message-cms
serviceName: message-cms
template:
metadata:
labels:
app: message-cms
workload.auth.cattle.io/workloadselector: statefulSet-openim-message-cms
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10900
protocol: TCP
containerPort: 10900
imagePullPolicy: Always
name: message-cms
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: message-cms
spec:
ports:
- name: p10900
port: 10900
protocol: TCP
targetPort: 10900
selector:
app: message-cms
type: ClusterIP

@ -0,0 +1,36 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_message_cms"
service_port_name="openImMessageCmsPort"
K8sServiceName="message-cms"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_msg.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_msg.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_msg.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_msg.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_msg"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_msg:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,94 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: msg
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: msg
workload.msg.cattle.io/workloadselector: statefulSet-openim-msg
serviceName: msg
template:
metadata:
labels:
app: msg
workload.msg.cattle.io/workloadselector: statefulSet-openim-msg
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10300
protocol: TCP
containerPort: 10300
imagePullPolicy: Always
name: msg
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: msg
spec:
ports:
- name: p10300
port: 10300
protocol: TCP
targetPort: 10300
selector:
app: msg
type: ClusterIP

@ -0,0 +1,36 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_msg"
service_port_name="openImOfflineMessagePort"
K8sServiceName="msg"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_msg_gateway.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_msg_gateway.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_msg_gateway.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_msg_gateway.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_msg_gateway"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_msg_gateway:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,119 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: msg-gateway
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: msg-gateway
workload.user.cattle.io/workloadselector: statefulSet-openim-msg-gateway
serviceName: msg-gateway
template:
metadata:
labels:
app: msg-gateway
workload.user.cattle.io/workloadselector: statefulSet-openim-msg-gateway
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10400
protocol: TCP
containerPort: 10400
- name: p17778
protocol: TCP
containerPort: 17778
imagePullPolicy: Always
name: msg-gateway
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: msg-gateway
spec:
ports:
- name: p10400
port: 10400
protocol: TCP
targetPort: 10400
- name: p17778
port: 17778
protocol: TCP
targetPort: 17778
selector:
app: msg-gateway
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: msg-gateway-remote
spec:
externalTrafficPolicy: Cluster
ports:
- name: p17778
nodePort: NODE_PORT_MSG_GATEWAY
port: 17778
protocol: TCP
targetPort: 17778
selector:
app: msg-gateway
type: NodePort

@ -0,0 +1,39 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
ulimit -n 200000
service_filename="open_im_msg_gateway"
K8sServiceName="msg-gateway"
binary_root="/Open-IM-Server/bin"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
list1=$(cat $config_path | grep openImOnlineRelayPort | awk -F '[:]' '{print $NF}')
list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}')
list_to_string $list1
rpc_ports=($ports_array)
list_to_string $list2
ws_ports=($ports_array)
if [ ${#rpc_ports[@]} -ne ${#ws_ports[@]} ]; then
echo -e ${RED_PREFIX}"ws_ports does not match push_rpc_ports in quantity!!!"${COLOR_SUFFIX}
exit 0
fi
#Check if the service exists
#If it is exists,kill this process
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
if [ $check -ge 1 ]; then
oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
kill -9 ${oldPid}
fi
#Waiting port recycling
sleep 1
cd ${binary_root}
./${service_filename} -rpc_port ${rpc_ports[$i]} -ws_port ${ws_ports[$i]}

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_msg_transfer.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_msg_transfer.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_msg_transfer.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_msg_transfer.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_msg_transfer"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_msg_transfer:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,75 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: msg-transfer
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: msg-transfer
workload.user.cattle.io/workloadselector: statefulSet-openim-msg-transfer
serviceName: msg-transfer
template:
metadata:
labels:
app: msg-transfer
workload.user.cattle.io/workloadselector: statefulSet-openim-msg-transfer
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
imagePullPolicy: Always
name: msg-transfer
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate

@ -0,0 +1,39 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
ulimit -n 200000
service_filename="open_im_msg_transfer"
K8sServiceName="msg-transfer"
binary_root="/Open-IM-Server/bin"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
list1=$(cat $config_path | grep openImOnlineRelayPort | awk -F '[:]' '{print $NF}')
list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}')
list_to_string $list1
rpc_ports=($ports_array)
list_to_string $list2
ws_ports=($ports_array)
if [ ${#rpc_ports[@]} -ne ${#ws_ports[@]} ]; then
echo -e ${RED_PREFIX}"ws_ports does not match push_rpc_ports in quantity!!!"${COLOR_SUFFIX}
exit 0
fi
#Check if the service exists
#If it is exists,kill this process
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
if [ $check -ge 1 ]; then
oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
kill -9 ${oldPid}
fi
#Waiting port recycling
sleep 1
cd ${binary_root}
./${service_filename} -rpc_port ${rpc_ports[$i]} -ws_port ${ws_ports[$i]}

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_push.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_push.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_push.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_push.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_push"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_push:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,94 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: push
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: push
workload.user.cattle.io/workloadselector: statefulSet-openim-push
serviceName: push
template:
metadata:
labels:
app: push
workload.user.cattle.io/workloadselector: statefulSet-openim-push
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10700
protocol: TCP
containerPort: 10700
imagePullPolicy: Always
name: push
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: push
spec:
ports:
- name: p10700
port: 10700
protocol: TCP
targetPort: 10700
selector:
app: push
type: ClusterIP

@ -0,0 +1,32 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
ulimit -n 200000
service_filename="open_im_push"
K8sServiceName="push"
binary_root="/Open-IM-Server/bin"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
list1=$(cat $config_path | grep openImPushPort | awk -F '[:]' '{print $NF}')
list_to_string $list1
rpc_ports=($ports_array)
#Check if the service exists
#If it is exists,kill this process
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
if [ $check -ge 1 ]; then
oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
kill -9 ${oldPid}
fi
#Waiting port recycling
sleep 1
cd ${binary_root}
./${service_filename} -port ${rpc_ports[$i]}

@ -0,0 +1,48 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
RUN rm -rf /Open-IM-Server/cmd/Open-IM-SDK-Core/ws_wrapper/cmd/open_im_sdk_server.go
COPY open_im_sdk_server.go /Open-IM-Server/cmd/Open-IM-SDK-Core/ws_wrapper/cmd
COPY build-open_im_sdk_server.sh /Open-IM-Server/script
COPY serverip.go /Open-IM-Server/cmd/Open-IM-SDK-Core/ws_wrapper/utils
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_sdk_server.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_sdk_server.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_sdk_server.sh"]

@ -0,0 +1,25 @@
#!/bin/bash
serviceName="Open-IM-SDK-Core"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_sdk_server:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,96 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: sdk-server
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: sdk-server
workload.user.cattle.io/workloadselector: statefulSet-openim-sdk-server
serviceName: sdk-server
template:
metadata:
labels:
app: sdk-server
workload.user.cattle.io/workloadselector: statefulSet-openim-sdk-server
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p30000
protocol: TCP
containerPort: 30000
imagePullPolicy: Always
name: sdk-server
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: sdk-server-remote
spec:
externalTrafficPolicy: Cluster
ports:
- name: p30000
nodePort: NODE_PORT_SDK_SERVER
port: 30000
protocol: TCP
targetPort: 30000
selector:
app: sdk-server
type: NodePort

@ -0,0 +1,73 @@
/*
** description("").
** copyright('open-im,www.open-im.io').
** author("fg,Gordon@tuoyun.net").
** time(2021/9/8 14:35).
*/
package main
import (
"flag"
"fmt"
"open_im_sdk/sdk_struct"
//"open_im_sdk/open_im_sdk"
"open_im_sdk/pkg/log"
"open_im_sdk/ws_wrapper/utils"
"open_im_sdk/ws_wrapper/ws_local_server"
"runtime"
"sync"
)
func main() {
var sdkWsPort, openIMApiPort, openIMWsPort *int
var openIMWsAddress, openIMApiAddress *string
//
//openIMTerminalType := flag.String("terminal_type", "web", "different terminal types")
sdkWsPort = flag.Int("sdk_ws_port", 30000, "openIMSDK ws listening port")
openIMApiPort = flag.Int("openIM_api_port", 10000, "openIM api listening port")
openIMWsPort = flag.Int("openIM_ws_port", 17778, "openIM ws listening port")
flag.Parse()
//switch *openIMTerminalType {
//case "pc":
// openIMWsAddress = flag.String("openIM_ws_address", "web", "different terminal types")
// openIMApiAddress = flag.String("openIM_api_address", "web", "different terminal types")
// flag.Parse()
//case "web":
// openIMApiPort = flag.Int("openIM_api_port", 0, "openIM api listening port")
// openIMWsPort = flag.Int("openIM_ws_port", 0, "openIM ws listening port")
// flag.Parse()
//}
APIADDR := "http://1.14.194.38:10000"
WSADDR := "ws://1.14.194.38:17778"
sysType := runtime.GOOS
switch sysType {
case "darwin":
ws_local_server.InitServer(&sdk_struct.IMConfig{ApiAddr: *openIMApiAddress,
WsAddr: *openIMWsAddress, Platform: utils.OSXPlatformID, DataDir: "./"})
case "linux":
//sdkDBDir:= flag.String("sdk_db_dir","","openIMSDK initialization path")
ws_local_server.InitServer(&sdk_struct.IMConfig{ApiAddr: "http://" + utils.ApiServerIP + ":" + utils.IntToString(*openIMApiPort),
WsAddr: "ws://" + utils.WsServerIP + ":" + utils.IntToString(*openIMWsPort), Platform: utils.WebPlatformID, DataDir: "../db/sdk/"})
case "windows":
// sdkWsPort = flag.Int("sdk_ws_port", 7799, "openIM ws listening port")
//flag.Parse()
ws_local_server.InitServer(&sdk_struct.IMConfig{ApiAddr: APIADDR,
WsAddr: WSADDR, Platform: utils.WebPlatformID, DataDir: "./"})
default:
fmt.Println("this os not support", sysType)
}
var wg sync.WaitGroup
wg.Add(1)
log.NewPrivateLog("sdk", 6)
fmt.Println("ws server is starting")
ws_local_server.WS.OnInit(*sdkWsPort)
ws_local_server.WS.Run()
wg.Wait()
}

@ -0,0 +1,6 @@
package utils
const (
ApiServerIP = "api"
WsServerIP = "msg-gateway"
)

@ -0,0 +1,46 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
ulimit -n 200000
service_filename="open_im_sdk_server"
binary_root="/Open-IM-Server/bin"
K8sServiceName="sdk-server"
K8sServiceNameForApi="api"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$K8sServiceNameForApi.$NAMESPACE#g" /Open-IM-Server/config/config.yaml
list1=$(cat $config_path | grep openImApiPort | awk -F '[:]' '{print $NF}')
list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}')
list3=$(cat $config_path | grep openImSdkWsPort | awk -F '[:]' '{print $NF}')
logLevel=$(cat $config_path | grep remainLogLevel | awk -F '[:]' '{print $NF}')
list_to_string $list1
api_ports=($ports_array)
list_to_string $list2
ws_ports=($ports_array)
list_to_string $list3
sdk_ws_ports=($ports_array)
list_to_string $list4
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
if [ $check -ge 1 ]; then
oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
kill -9 ${oldPid}
fi
#Check if the service exists
#If it is exists,kill this process
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
if [ $check -ge 1 ]; then
oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
kill -9 ${oldPid}
fi
#Waiting port recycling
sleep 1
cd ${binary_root}
./${service_filename} -openIM_api_port ${api_ports[0]} -openIM_ws_port ${ws_ports[0]} -sdk_ws_port ${sdk_ws_ports[0]}

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_statistics.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_statistics.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_statistics.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_statistics.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_statistics"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_statistics:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,94 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: statistics
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: statistics
workload.statistics.cattle.io/workloadselector: statefulSet-openim-statistics
serviceName: statistics
template:
metadata:
labels:
app: statistics
workload.statistics.cattle.io/workloadselector: statefulSet-openim-statistics
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10800
protocol: TCP
containerPort: 10800
imagePullPolicy: Always
name: statistics
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: statistics
spec:
ports:
- name: p10800
port: 10800
protocol: TCP
targetPort: 10800
selector:
app: statistics
type: ClusterIP

@ -0,0 +1,36 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_statistics"
service_port_name="openImStatisticsPort"
K8sServiceName="statistics"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_timer_task.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_timer_task.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_timer_task.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_timer_task.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_timer_task"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_timer_task:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,75 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: timer-task
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: timer-task
workload.user.cattle.io/workloadselector: statefulSet-openim-timer-task
serviceName: timer-task
template:
metadata:
labels:
app: timer-task
workload.user.cattle.io/workloadselector: statefulSet-openim-timer-task
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
imagePullPolicy: Always
name: timer-task
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate

@ -0,0 +1,39 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
ulimit -n 200000
service_filename="open_im_timer_task"
K8sServiceName="timer-task"
binary_root="/Open-IM-Server/bin"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
list1=$(cat $config_path | grep openImOnlineRelayPort | awk -F '[:]' '{print $NF}')
list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}')
list_to_string $list1
rpc_ports=($ports_array)
list_to_string $list2
ws_ports=($ports_array)
if [ ${#rpc_ports[@]} -ne ${#ws_ports[@]} ]; then
echo -e ${RED_PREFIX}"ws_ports does not match push_rpc_ports in quantity!!!"${COLOR_SUFFIX}
exit 0
fi
#Check if the service exists
#If it is exists,kill this process
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
if [ $check -ge 1 ]; then
oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
kill -9 ${oldPid}
fi
#Waiting port recycling
sleep 1
cd ${binary_root}
./${service_filename}

@ -0,0 +1,46 @@
FROM golang as build
# go mod Installation source, container environment variable addition will override the default variable value
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV VERSION_TAG="2.0.2"
# Set up the working directory
#WORKDIR /Open-IM-Server
# add all files to the container
#COPY . .
COPY Open-IM-Server.tar.gz /
COPY Open-IM-SDK-Core.tar.gz /
WORKDIR /
RUN tar -zxvf Open-IM-Server.tar.gz && \
mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
rm -rf Open-IM-Server.tar.gz && \
tar -zxvf Open-IM-SDK-Core.tar.gz && \
rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
rm -rf Open-IM-Server.tar.gz
COPY build-open_im_user.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
RUN chmod +x *.sh && \
cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
cd /Open-IM-Server/script && \
/bin/sh -c ./build-open_im_user.sh
#Blank image Multi-Stage Build
FROM showurl/openim-base:v2.0.2
#set directory to map logs,config file,script file.
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
#Copy scripts files and binary files to the blank image
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
COPY start-open_im_user.sh /Open-IM-Server/script
WORKDIR /Open-IM-Server/script
CMD ["bash", "start-open_im_user.sh"]

@ -0,0 +1,26 @@
#!/bin/bash
serviceName="open_im_user"
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
bin_dir="../bin"
logs_dir="../logs"
sdk_db_dir="../db/sdk/"
#Automatically created when there is no bin, logs folder
if [ ! -d $bin_dir ]; then
mkdir -p $bin_dir
fi
if [ ! -d $logs_dir ]; then
mkdir -p $logs_dir
fi
if [ ! -d $sdk_db_dir ]; then
mkdir -p $sdk_db_dir
fi
#begin path
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"

@ -0,0 +1,44 @@
#!/bin/bash
source ../setting.env
VERSION_TAG="2.0.2"
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_user:v$VERSION_TAG"
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
rm -rf Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
fi
echo "下载完成" && \
docker build . -t $IMAGE_TAG --no-cache && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
echo "构建完成" && \
docker push $IMAGE_TAG && \
cp development.tmp.yaml development.yaml
if [[ `uname` == 'Darwin' ]]; then
sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
elif [[ `uname` == 'Linux' ]]; then
sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
fi
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml

@ -0,0 +1,94 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: user
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: user
workload.user.cattle.io/workloadselector: statefulSet-openim-user
serviceName: user
template:
metadata:
labels:
app: user
workload.user.cattle.io/workloadselector: statefulSet-openim-user
spec:
containers:
- image: "IMAGE_TAG"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: p10100
protocol: TCP
containerPort: 10100
imagePullPolicy: Always
name: user
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
volumeMounts:
- mountPath: /Open-IM-Server/config.tmp.yaml
name: vol2
readOnly: true
subPath: config.yaml
dnsConfig: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: config.yaml
optional: false
name: vol2
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: user
spec:
ports:
- name: p10100
port: 10100
protocol: TCP
targetPort: 10100
selector:
app: user
type: ClusterIP

@ -0,0 +1,37 @@
#!/usr/bin/env bash
source ./style_info.cfg
source ./path_info.cfg
source ./function.sh
service_filename="open_im_user"
service_port_name="openImUserPort"
K8sServiceName="user"
#Check whether the service exists
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
count="${service_name}| wc -l"
rm -rf /Open-IM-Server/config
mkdir /Open-IM-Server/config
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
if [ $(eval ${count}) -gt 0 ]; then
pid="${service_name}| awk '{print \$2}'"
echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
#kill the service that existed
kill -9 $(eval $pid)
sleep 0.5
fi
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
#Get the rpc port in the configuration file
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
list_to_string ${portList}
#Start related rpc services based on the number of ports
for j in ${ports_array}; do
echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
./${service_filename} -port $j
done

@ -0,0 +1,6 @@
DOCKER_REGISTRY_ADDR="harbor.local/"
NODE_PORT_API="10100"
NODE_PORT_MSG_GATEWAY="10101"
NODE_PORT_SDK_SERVER="10102"
NODE_PORT_DEMO="10103"
K8S_NAMESPACE="openim"
Loading…
Cancel
Save