mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-27 05:52:29 +08:00 
			
		
		
		
	feat 新增deploy:单容器单进程模型部署
This commit is contained in:
		
							parent
							
								
									cd14f3e649
								
							
						
					
					
						commit
						38f0e3d833
					
				
							
								
								
									
										12
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -6,4 +6,14 @@ logs | ||||
| out-test | ||||
| .github | ||||
| 
 | ||||
| 
 | ||||
| deploy/open_im_demo | ||||
| deploy/open_im_api | ||||
| deploy/open_im_msg_gateway | ||||
| deploy/open_im_msg_transfer | ||||
| deploy/open_im_push | ||||
| deploy/open_im_timer_task | ||||
| deploy/open_im_rpc_user | ||||
| deploy/open_im_rpc_friend | ||||
| deploy/open_im_rpc_group | ||||
| deploy/open_im_rpc_msg | ||||
| deploy/open_im_rpc_auth | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| Subproject commit 369973051405db1102fd1b99a0226ab79b9922e0 | ||||
| Subproject commit d6372d6fe5aeea1a57e5668b510bb6e42a7e49a3 | ||||
							
								
								
									
										6
									
								
								deploy/.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								deploy/.dockerignore
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| # 先设为忽略所有内容 | ||||
| **/** | ||||
| 
 | ||||
| 
 | ||||
| # 然后逐个排除 | ||||
| !open_im_* | ||||
							
								
								
									
										158
									
								
								deploy/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								deploy/Makefile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,158 @@ | ||||
| 
 | ||||
| GREEN_PREFIX="\033[32m" | ||||
| COLOR_SUFFIX="\033[0m" | ||||
| SKY_BLUE_PREFIX="\033[36m" | ||||
| 
 | ||||
| 
 | ||||
| # 编译所有需要的组件源码
 | ||||
| win-build-all: | ||||
| 	go env -w GOOS=linux  | ||||
| 
 | ||||
| 	make build-api && make build-msg-gateway && make build-msg-transfer  && make build-push && make build-timer-task | ||||
| 	make build-rpc-user && make build-rpc-friend && make build-rpc-group && make build-rpc-msg && make build-rpc-auth | ||||
| 	make build-demo | ||||
| 
 | ||||
| 	go env -w GOOS=windows | ||||
| 
 | ||||
| # 编译 open_im_api
 | ||||
| build-api: | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_api building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_api ../cmd/open_im_api/main.go | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_api build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 open_im_msg_gateway
 | ||||
| build-msg-gateway: | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_msg_gateway building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_msg_gateway ../cmd/open_im_msg_gateway/main.go | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_msg_gateway build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 open_im_msg_transfer
 | ||||
| build-msg-transfer: | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_msg_transfer building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_msg_transfer ../cmd/open_im_msg_transfer/main.go | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_msg_transfer build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 open_im_push
 | ||||
| build-push: | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_push building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_push ../cmd/open_im_push/main.go | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_push build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 open_im_timer_task
 | ||||
| build-timer-task: | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_timer_task building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_timer_task ../cmd/open_im_timer_task/main.go | ||||
| 	echo -e ${GREEN_PREFIX} "open_im_timer_task build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 build-rpc-user
 | ||||
| build-rpc-user: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_user building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_rpc_user ../cmd/rpc/open_im_user/main.go | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_user build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 build-rpc-friend
 | ||||
| build-rpc-friend: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_friend building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_rpc_friend ../cmd/rpc/open_im_friend/main.go | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_friend build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 build-rpc-group
 | ||||
| build-rpc-group: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_group building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_rpc_group ../cmd/rpc/open_im_group/main.go | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_group build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 build-rpc-auth
 | ||||
| build-rpc-auth: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_auth building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_rpc_auth ../cmd/rpc/open_im_auth/main.go | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_auth build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 build-rpc-msg
 | ||||
| build-rpc-msg: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_msg building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_rpc_msg ../cmd/rpc/open_im_msg/main.go | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_msg build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 编译 open_im_demo
 | ||||
| build-demo: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_demo building..." ${COLOR_SUFFIX} | ||||
| 	go build -ldflags="-w -s" -o open_im_demo ../cmd/open_im_demo/main.go | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "open_im_demo build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包所有组件为镜像
 | ||||
| image-all: | ||||
| 	make image-api && make image-msg-gateway && make image-msg-transfer & make image-push && make image-timer-task | ||||
| 	make image-rpc-user && make image-rpc-friend && make image-rpc-group && make image-rpc-msg && make image-rpc-auth | ||||
| 	make image-demo | ||||
| 
 | ||||
| # 打包 open_im_api
 | ||||
| image-api: | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/api building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/api:latest -f ./dockerfiles/Dockerfile.api . | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/api build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 open_im_msg_gateway
 | ||||
| image-msg-gateway: | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/msg_gateway building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/msg_gateway:latest -f ./dockerfiles/Dockerfile.msg_gateway . | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/msg_gateway build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 open_im_msg_transfer
 | ||||
| image-msg-transfer: | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/msg_transfer building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/msg_transfer:latest -f ./dockerfiles/Dockerfile.msg_transfer . | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/msg_transfer build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 open_im_push
 | ||||
| image-push: | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/push building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/push:latest -f ./dockerfiles/Dockerfile.push . | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/push build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 open_im_timer_task
 | ||||
| image-timer-task: | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/timer_task building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/timer_task:latest -f ./dockerfiles/Dockerfile.timer_task . | ||||
| 	echo -e ${GREEN_PREFIX} "IMAGE:openim/timer_task build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 build-rpc-user
 | ||||
| image-rpc-user: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_user building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/rpc_user:latest -f ./dockerfiles/Dockerfile.rpc_user . | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_user build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 build-rpc-friend
 | ||||
| image-rpc-friend: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_friend building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/rpc_friend:latest -f ./dockerfiles/Dockerfile.rpc_friend . | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_friend build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 build-rpc-group
 | ||||
| image-rpc-group: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_group building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/rpc_group:latest -f ./dockerfiles/Dockerfile.rpc_group . | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_group build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 build-rpc-auth
 | ||||
| image-rpc-auth: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_auth building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/rpc_auth:latest -f ./dockerfiles/Dockerfile.rpc_auth . | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_auth build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 build-rpc-msg
 | ||||
| image-rpc-msg: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_msg building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/rpc_msg:latest -f ./dockerfiles/Dockerfile.rpc_msg . | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_msg build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| # 打包 open_im_demo
 | ||||
| image-demo: | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/demo building..." ${COLOR_SUFFIX} | ||||
| 	docker build -t openim/demo:latest -f ./dockerfiles/Dockerfile.demo . | ||||
| 	echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/demo build ok" ${COLOR_SUFFIX} | ||||
| 
 | ||||
| .PHONY: win-build-all build-api build-msg-gateway build-msg-transfer build-push  | ||||
| 	build-timer-task build-rpc-user build-rpc-friend build-rpc-group build-rpc-msg build-demo | ||||
| 	image-all image-api image-msg-gateway image-msg-transfer image-push  | ||||
| 	image-timer-task image-rpc-user image-rpc-friend image-rpc-group image-rpc-msg image-demo | ||||
							
								
								
									
										166
									
								
								deploy/config.example.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								deploy/config.example.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,166 @@ | ||||
| # The class cannot be named by Pascal or camel case. | ||||
| # If it is not used, the corresponding structure will not be set, | ||||
| # and it will not be read naturally. | ||||
| serverversion: 1.0.3 | ||||
| #---------------Infrastructure configuration---------------------# | ||||
| etcd: | ||||
|   etcdSchema: openIM | ||||
|   etcdAddr: [ etcd:2379 ] | ||||
| 
 | ||||
| mysql: | ||||
|   dbMysqlAddress: [ 192.168.31.101:3306 ] | ||||
|   dbMysqlUserName: openIM | ||||
|   dbMysqlPassword: openIM | ||||
|   dbMysqlDatabaseName: openIM | ||||
|   dbTableName: eMsg | ||||
|   dbMsgTableNum: 1 | ||||
|   dbMaxOpenConns: 20 | ||||
|   dbMaxIdleConns: 10 | ||||
|   dbMaxLifeTime: 120 | ||||
| 
 | ||||
| mongo: | ||||
|   dbAddress: [ 192.168.31.102:27017 ] | ||||
|   dbDirect: false | ||||
|   dbTimeout: 10 | ||||
|   dbDatabase: openIM | ||||
|   dbSource: admin | ||||
|   dbUserName: | ||||
|   dbPassword: | ||||
|   dbMaxPoolSize: 20 | ||||
|   dbRetainChatRecords: 7 | ||||
| 
 | ||||
| redis: | ||||
|   dbAddress: openim_redis:6379 | ||||
|   dbMaxIdle: 128 | ||||
|   dbMaxActive: 0 | ||||
|   dbIdleTimeout: 120 | ||||
|   dbPassWord: openIM | ||||
| 
 | ||||
| kafka: | ||||
|   ws2mschat: | ||||
|     addr: [ openim_kafka:9092 ] | ||||
|     topic: "ws2ms_chat" | ||||
|   ms2pschat: | ||||
|     addr: [ openim_kafka:9092 ] | ||||
|     topic: "ms2ps_chat" | ||||
|   consumergroupid: | ||||
|     msgToMongo: mongo | ||||
|     msgToMySql: mysql | ||||
|     msgToPush: push | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #---------------Internal service configuration---------------------# | ||||
| 
 | ||||
| # The service ip default is empty, | ||||
| # automatically obtain the machine's valid network card ip as the service ip, | ||||
| # otherwise the configuration ip is preferred | ||||
| serverip: 0.0.0.0 | ||||
| 
 | ||||
| api: | ||||
|   openImApiPort: [ 10000 ] | ||||
| sdk: | ||||
|   openImSdkWsPort: [ 30000 ] | ||||
| 
 | ||||
| credential: | ||||
|   tencent: | ||||
|     appID: 1302656840 | ||||
|     region: ap-chengdu | ||||
|     bucket: echat-1302656840 | ||||
|     secretID: AKIDGNYVChzIQinu7QEgtNp0hnNgqcV8vZTC | ||||
|     secretKey: kz15vW83qM6dBUWIq681eBZA0c0vlIbe | ||||
| 
 | ||||
| 
 | ||||
| rpcport: | ||||
|   openImUserPort: [ 10100 ] | ||||
|   openImFriendPort: [ 10200 ] | ||||
|   openImOfflineMessagePort: [ 10300] | ||||
|   openImOnlineRelayPort: [ 10400 ] | ||||
|   openImGroupPort: [ 10500  ] | ||||
|   openImAuthPort: [ 10600 ] | ||||
|   openImPushPort: [ 10700 ] | ||||
| 
 | ||||
| 
 | ||||
| rpcregistername: | ||||
|   openImUserName: User | ||||
|   openImFriendName: Friend | ||||
|   openImOfflineMessageName: OfflineMessage | ||||
|   openImPushName: Push | ||||
|   openImOnlineMessageRelayName: OnlineMessageRelay | ||||
|   openImGroupName: Group | ||||
|   openImAuthName: Auth | ||||
| 
 | ||||
| log: | ||||
|   storageLocation: ../logs/ | ||||
|   rotationTime: 24 | ||||
|   remainRotationCount: 5 | ||||
|   remainLogLevel: 6 | ||||
|   elasticSearchSwitch: false | ||||
|   elasticSearchAddr: [ 127.0.0.1:9201 ] | ||||
|   elasticSearchUser: "" | ||||
|   elasticSearchPassword: "" | ||||
| 
 | ||||
| modulename: | ||||
|   longConnSvrName: msg_gateway | ||||
|   msgTransferName: msg_transfer | ||||
|   pushName: push | ||||
| 
 | ||||
| longconnsvr: | ||||
|   openImWsPort: [ 17778 ] | ||||
|   websocketMaxConnNum: 10000 | ||||
|   websocketMaxMsgLen: 4096 | ||||
|   websocketTimeOut: 10 | ||||
| 
 | ||||
| push: | ||||
|   tpns: | ||||
|     ios: | ||||
|       accessID: 1600018281 | ||||
|       secretKey: 3cd68a77a95b89e5089a1aca523f318f | ||||
|     android: | ||||
|       accessID: 111 | ||||
|       secretKey: 111 | ||||
|   jpns: | ||||
|     appKey: cf47465a368f24c659608e7e | ||||
|     masterSecret: 02204efe3f3832947a236ee5 | ||||
|     pushUrl: "https://api.jpush.cn/v3/push" | ||||
|     pushIntent: "intent:#Intent;component=io.openim.app.enterprisechat/io.openim.app.enterprisechat.MainActivity;end" | ||||
| manager: | ||||
|   appManagerUid: ["openIM123456","openIM654321"] | ||||
|   secrets: ["openIM1","openIM2"] | ||||
| 
 | ||||
| secret: tuoyun | ||||
| 
 | ||||
| multiloginpolicy: 1 | ||||
| 
 | ||||
| #token config | ||||
| tokenpolicy: | ||||
|   accessSecret: "open_im_server" | ||||
|   # Token effective time day as a unit | ||||
|   accessExpire: 7 | ||||
| 
 | ||||
| messagecallback: | ||||
|   callbackSwitch: false | ||||
|   callbackUrl: "http://www.xxx.com/msg/judge" | ||||
|   #TimeOut use second as unit | ||||
|   callbackTimeOut: 10 | ||||
| 
 | ||||
| 
 | ||||
| #---------------demo configuration---------------------# | ||||
| #The following configuration items are applied to openIM Demo configuration | ||||
| demoswitch: true | ||||
| demo: | ||||
|   openImDemoPort: [ 42233 ] | ||||
|   alismsverify: | ||||
|     accessKeyId: LTAI5tJPkn4HuuePdiLdGqe71 | ||||
|     accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV1 | ||||
|     signName: OpenIM Corporation | ||||
|     verificationCodeTemplateCode: SMS_2268101641 | ||||
|   superCode: 666666 | ||||
|   mail: | ||||
|     title: "openIM" | ||||
|     senderMail: "1765567899@qq.com" | ||||
|     senderAuthorizationCode: "1gxyausfoevlzbfag" | ||||
|     smtpAddr: "smtp.qq.com" | ||||
|     smtpPort: 25 | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.api
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.api
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_api $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.demo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.demo
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_demo $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.msg_gateway
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.msg_gateway
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_msg_gateway $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,重命名可执行文件为 main,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.msg_transfer
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.msg_transfer
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_msg_transfer $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.push
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.push
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_push $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_auth
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_auth
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_rpc_auth $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_friend
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_friend
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_rpc_friend $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_group
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_group
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_rpc_group $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_msg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_msg
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_rpc_msg $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_user
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.rpc_user
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_rpc_user $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										15
									
								
								deploy/dockerfiles/Dockerfile.timer_task
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								deploy/dockerfiles/Dockerfile.timer_task
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| FROM alpine:3.13 | ||||
| 
 | ||||
| # 设置固定的项目路径 | ||||
| ENV WORKDIR /app | ||||
| 
 | ||||
| # 将可执行文件复制到目标目录 | ||||
| ADD ./open_im_timer_task $WORKDIR/main | ||||
| 
 | ||||
| # 创建用于挂载的几个目录,添加可执行权限 | ||||
| RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \ | ||||
|   chmod +x $WORKDIR/main | ||||
| 
 | ||||
| 
 | ||||
| WORKDIR $WORKDIR | ||||
| CMD ./main | ||||
							
								
								
									
										103
									
								
								deploy/env.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								deploy/env.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,103 @@ | ||||
| version: "3.7" | ||||
| networks:  | ||||
|   openim:  | ||||
|     external: true | ||||
|   | ||||
| services: | ||||
|   # mysql: | ||||
|   #   networks:  | ||||
|   #     - openim | ||||
|   #   image: 192.168.31.101:8080/library/mysql:5.7 | ||||
|   #   # ports: | ||||
|   #   #   #- 13306:3306 | ||||
|   #   #   - 23306:33060 | ||||
|   #   container_name: mysql | ||||
|   #   volumes: | ||||
|   #     - ./components/mysql/data:/var/lib/mysql | ||||
|   #     - /etc/localtime:/etc/localtime | ||||
|   #   environment: | ||||
|   #     MYSQL_ROOT_PASSWORD: openIM | ||||
|   #   restart: always | ||||
| 
 | ||||
|   # mongodb: | ||||
|   #   networks:  | ||||
|   #     - openim | ||||
|   #   image: 192.168.31.101:8080/library/mongo:4.4.5-bionic | ||||
|   #   # ports: | ||||
|   #   #   - 37017:27017 | ||||
|   #   container_name: mongo | ||||
|   #   volumes: | ||||
|   #     - ./components/mongodb/data/db:/data/db | ||||
|   #     - ./components/mongodb/data/logs:/data/logs | ||||
|   #     - ./components/mongodb/data/conf:/etc/mongo | ||||
|   # #  environment: | ||||
|   #  #   - MONGO_INITDB_ROOT_USERNAME=openIM | ||||
|   #   #  - MONGO_INITDB_ROOT_PASSWORD=openIM | ||||
| 
 | ||||
|   #     #TZ: Asia/Shanghai | ||||
|   #   restart: always | ||||
| 
 | ||||
|   redis: | ||||
|     networks:  | ||||
|       - openim | ||||
|     image: 192.168.31.101:8080/library/redis:6.2.4-alpine | ||||
|     # ports: | ||||
|     #   - 16379:6379 | ||||
|     container_name: openim_redis | ||||
|     volumes: | ||||
|       - ./components/redis/data:/data | ||||
|       #redis config file | ||||
|       #- ./components/redis/config/redis.conf:/usr/local/redis/config/redis.conf | ||||
|     environment: | ||||
|       TZ: Asia/Shanghai | ||||
|     restart: always | ||||
|     sysctls: | ||||
|       net.core.somaxconn: 1024 | ||||
|     command: redis-server --requirepass openIM --appendonly yes | ||||
| 
 | ||||
| 
 | ||||
|   zookeeper: | ||||
|     networks:  | ||||
|       - openim | ||||
|     image: wurstmeister/zookeeper | ||||
|     # ports: | ||||
|     #   - 2181:2181 | ||||
|     container_name: openim_zookeeper | ||||
|     volumes: | ||||
|       - /etc/localtime:/etc/localtime | ||||
|     environment: | ||||
|       TZ: Asia/Shanghai | ||||
|     restart: always | ||||
| 
 | ||||
| 
 | ||||
|   kafka: | ||||
|     networks:  | ||||
|       - openim | ||||
|     image: wurstmeister/kafka | ||||
|     container_name: openim_kafka | ||||
|     restart: always | ||||
|     environment: | ||||
|       TZ: Asia/Shanghai | ||||
|       KAFKA_BROKER_ID: 0 | ||||
|       KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 | ||||
|       KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 | ||||
|       KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 | ||||
|     depends_on: | ||||
|       - zookeeper | ||||
| 
 | ||||
|   etcd: | ||||
|     networks:  | ||||
|       - openim | ||||
|     image: quay.io/coreos/etcd | ||||
|     # ports: | ||||
|     #   - 2379:2379 | ||||
|     #   - 2380:2380 | ||||
|     container_name: openim_etcd | ||||
|     volumes: | ||||
|       - /etc/timezone:/etc/timezone | ||||
|       - /etc/localtime:/etc/localtime | ||||
|     environment: | ||||
|       ETCDCTL_API: 3 | ||||
|     restart: always | ||||
|     command: /usr/local/bin/etcd --name etcd0 --data-dir /etcd-data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380 --initial-cluster etcd0=http://0.0.0.0:2380 --initial-cluster-token tkn --initial-cluster-state new | ||||
| 
 | ||||
							
								
								
									
										236
									
								
								deploy/openim.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										236
									
								
								deploy/openim.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,236 @@ | ||||
| version: "3.7" | ||||
| #fixme  Clone openIM Server project before using docker-compose,project address:https://github.com/OpenIMSDK/Open-IM-Server.git | ||||
| networks:  | ||||
|   huochai-local:  | ||||
|     external: true | ||||
|   openim: | ||||
|     external: true | ||||
|   | ||||
| services: | ||||
|   api: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/api | ||||
|     container_name: openim_api | ||||
|     ports: | ||||
|       - 10000:10000 # API,必须开 | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
|     logging: | ||||
|       driver: json-file | ||||
|       options: | ||||
|         max-size: "1g" | ||||
|         max-file: "2" | ||||
| 
 | ||||
|   msg_gateway: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/msg_gateway | ||||
|     container_name: openim_msg_gateway | ||||
|     ports: | ||||
|       - 17778:17778 # 消息,必须开 | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
|     logging: | ||||
|       driver: json-file | ||||
|       options: | ||||
|         max-size: "1g" | ||||
|         max-file: "2" | ||||
|          | ||||
|   msg_transfer: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/msg_transfer | ||||
|     container_name: openim_msg_transfer | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
|     logging: | ||||
|       driver: json-file | ||||
|       options: | ||||
|         max-size: "1g" | ||||
|         max-file: "2" | ||||
|    | ||||
|   push: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/push | ||||
|     container_name: openim_push | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
|     logging: | ||||
|       driver: json-file | ||||
|       options: | ||||
|         max-size: "1g" | ||||
|         max-file: "2" | ||||
| 
 | ||||
|   timer_task: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/timer_task | ||||
|     container_name: openim_timer_task | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
|     logging: | ||||
|       driver: json-file | ||||
|       options: | ||||
|         max-size: "1g" | ||||
|         max-file: "2" | ||||
| 
 | ||||
|   rpc_user: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/rpc_user | ||||
|     container_name: openim_rpc_user | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
|     logging: | ||||
|       driver: json-file | ||||
|       options: | ||||
|         max-size: "1g" | ||||
|         max-file: "2" | ||||
| 
 | ||||
|   rpc_friend: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/rpc_friend | ||||
|     container_name: openim_rpc_friend | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
| 
 | ||||
|   rpc_group: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/rpc_group | ||||
|     container_name: openim_rpc_group | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
| 
 | ||||
|   rpc_auth: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/rpc_auth | ||||
|     container_name: openim_rpc_auth | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
| 
 | ||||
|   rpc_msg: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/rpc_msg | ||||
|     container_name: openim_rpc_msg | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
|     # depends_on: | ||||
|     #   - kafka | ||||
|     #   # - mysql | ||||
|     #   # - mongodb | ||||
|     #   - redis | ||||
|     #   - etcd | ||||
| 
 | ||||
|   demo: | ||||
|     networks:  | ||||
|       - huochai-local | ||||
|       - openim | ||||
|     image: openim/demo | ||||
|     container_name: openim_demo | ||||
|     ports: | ||||
|       - 42233:42233 | ||||
|     volumes: | ||||
|       - ./logs:/app/logs | ||||
|       - ./config/config.yaml:/app/config/config.yaml | ||||
|       - ./db/sdk:/app/db/sdk | ||||
|     restart: always | ||||
							
								
								
									
										21
									
								
								deploy/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								deploy/readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| 
 | ||||
| ### 以docker-compose 形式单独部署 | ||||
| ```sh | ||||
| # 查看 ./Makefile ,先编译各个需要的源码到 ../bin  | ||||
| # win-* 表示在win平台编译位linux二进制,其实就是处理了 go env -w GOOS=linux  | ||||
| make win-build-all | ||||
| 
 | ||||
| # 得到各个二进制程序之后,打包为镜像 | ||||
| # | ||||
| make image-all | ||||
| 
 | ||||
| # docker-compose.yaml 分成了两部分,一部分是openIM的镜像容器 openim.yaml,一部分是依赖的环境 env.yaml | ||||
| # 两部分使用一个外部的网络来联通,所以首先创建用到的 network | ||||
| docker network create openim --attachable=true -d bridge | ||||
| 
 | ||||
| # 然后拉起env.yaml | ||||
| docker-compose -f ./env.yaml up -d | ||||
| 
 | ||||
| # 等env 容器全部拉起成功之后,拉起openim.yaml | ||||
| docker-compose -f ./openim.yaml up -d | ||||
| ``` | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user