Skip to content

Commit

Permalink
Merge branch 'bugfix/deploy_docker'
Browse files Browse the repository at this point in the history
# Conflicts:
#	.gitignore
#	README.md
#	clean.sh
#	copy.sh
#	deploy.sh
#	docker-compose.yml
#	docker/mysql/db/im_core.sql
#	im-domain/Dockerfile
#	im-domain/src/main/resources/application-docker.yml
#	im-domain/src/main/resources/application.yml
#	im-message-store/Dockerfile
#	im-message-store/src/main/resources/application-docker.yml
#	im-message-store/src/main/resources/application.yml
#	im-tcp/Dockerfile
#	im-tcp/im-tcp.iml
#	im-tcp/pom.xml
#	im-tcp/src/main/resources/WebSocket.html
#	im-tcp/src/main/resources/config-docker.yml
#	im-tcp/src/main/resources/static/websocket.html
#	logback-spring.xml
#	open_port.sh
#	pom.xml
  • Loading branch information
BanTanger committed Sep 21, 2023
2 parents e822705 + c69594a commit 394d82e
Show file tree
Hide file tree
Showing 55 changed files with 2,927 additions and 992 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,8 @@
/docker/mysql/data/
/docker/redis/data/
/logs/
/docker/build/
/docker/mysql/logs/
/im-tcp/logs/
/im-domain/logs/
/im-message-store/logs/
33 changes: 23 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,30 +62,41 @@ im-system-whale-shark

可参考自行下载: [服务器下载 Git、Docker、Docker-Compose](docker/docker.md)

#### 粗粒度部署方式:

1. 克隆本项目

```bash
git clone https://github.com/BanTanger/im-whale-shark.git
```
2. 项目打包

2. 根目录下运行 build 脚本

```bash
mvn clean package
sh build.sh
```
- 会将各个模块打包,执行 docker-compose,届时通过终端观察 im-whaleshark 日志

此过程可能有点长,请耐心等待
#### 细粒度部署方式:

3. 为脚本执行赋予权限并执行
1. 克隆本项目

```bash
git clone https://github.com/BanTanger/im-whale-shark.git
```

2. 为脚本执行赋予权限并执行

```bash
chmod +x *.sh
```
```bash
./copy.sh
sh clean.sh
sh copy.sh
```
- 将各个模块的 jar 包和 Dockerfile 移动到 docker/build 包下

4. 部署项目
3. 部署项目

```bash
sh deploy.sh base
Expand All @@ -96,7 +107,7 @@ sh deploy.sh serives
```
- 将后端的三个模块部署到 docker

5. 开启防火墙
4. 开启防火墙
```bash
./open_port.sh
```
Expand Down Expand Up @@ -152,9 +163,11 @@ docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq

### websocket 测试
`whale-shark/im-tcp/src/main/resources/WebSocket.html`
暂时较为简陋, 本地测试, 需开启后端三个服务
暂时较为简陋, 本地测试需开启后端三个服务并打开 WebSocket 页面

Docker 部署测试请访问 `localhost:19000`

主要浏览方式通过 F12 查看服务端发送的 `json` 格式是否正确
浏览方式通过 F12 查看服务端发送的 `json` 格式是否正确

![](assert/design/websocket窗口功能讲解.png)

Expand Down Expand Up @@ -407,4 +420,4 @@ IM 服务采用 SDK 方式集成到前端代码。一个大致的流程演示如

欢迎与我联系交流,我拉你进交流群,微信二维码为(注明来意喔~):

![与我联系.png](assert/design/与我联系.png)
![与我联系.png](assert/design/与我联系.png)
24 changes: 24 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env bash
# Be sure your script exits whenever encounter errors
set -e
# Be sure your charset is correct. eg: zh_CN.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
## set env
#export JAVA_HOME=$ORACLEJDK_1_8_0_HOME
#export PATH=$ORACLEJDK_1_8_0_BIN:$PATH
#export MAVEN_HOME=$MAVEN_3_5_3_HOME
#export PATH=$MAVEN_3_6_3_BIN:$PATH

# compile
mvn -U clean install -Dmaven.javadoc.skip=true -Dmaven.test.skip=true

# 为脚本赋予权限
chmod +x *.sh
# 清空 build 包
./clean.sh
# 将 compile 编译出来的 jar 包和 Dockerfile、resource 配置文件资源迁移到 build 包下
./copy.sh
# docker-compose 粗粒度启动所有服务,细粒度的启动请参考 deploy.sh 脚本
docker-compose up
10 changes: 8 additions & 2 deletions clean.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ echo "::: Welcome to IM-WhaleShark :::"

# 删除 build 文件夹
echo "开始清理 build 文件夹 .."

rm -rf docker/build/
if [ -d "docker/build" ]; then
DELETED_FILES=$(find docker/build -type f -o -type d)
rm -rf docker/build/
echo "以下文件夹和文件已被删除:"
echo "$DELETED_FILES" | sed 's/ /\n/g'
else
echo "build 文件夹不存在,无需清理。"
fi
echo "清理完成"
10 changes: 6 additions & 4 deletions copy.sh
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#!/bin/bash


echo "--------------------------------"
echo "::: Welcome to IM-WhaleShark :::"
# 创建目标目录
Expand Down Expand Up @@ -35,8 +34,8 @@ done
echo ">>>>>>>>>>>>>>>>>"

config_files=(
"im-message-store/src/main/resources/application-docker.yml"
"im-domain/src/main/resources/application-docker.yml"
"im-message-store/src/main/resources/application-docker.yml"
"im-tcp/src/main/resources/config-docker.yml"
)

Expand All @@ -55,17 +54,20 @@ echo ">>>>>>>>>>>>>>>>>"
jar_files=(
"im-domain/target/im-domain-1.0-SNAPSHOT.jar"
"im-message-store/target/im-message-store-1.0-SNAPSHOT.jar"
"im-tcp/target/im-tcp-1.0-SNAPSHOT-jar-with-dependencies.jar"
"im-tcp/target/im-tcp-1.0-SNAPSHOT.jar"
)

for index in "${!jar_files[@]}"; do
target_file="${target_directories[$index]}/jar/$(basename "${jar_files[$index]}")"
target_file_without_version="${target_directories[$index]}/jar/$(basename "${jar_files[$index]}" "-1.0-SNAPSHOT.jar").jar"
if [[ "${jar_files[$index]}" == *"jar-with-dependencies.jar" ]]; then
target_file_without_version="${target_directories[$index]}/jar/$(basename "${jar_files[$index]}" "-1.0-SNAPSHOT-jar-with-dependencies.jar").jar"
target_file_without_version="${target_directories[$index]}/jar/$(basename "${jar_files[$index]}" "-1.0-SNAPSHOT.jar").jar"
fi
echo "开始复制 ${jar_files[$index]} .."
cp "${jar_files[$index]}" "$target_file"
mv "$target_file" "$target_file_without_version"
echo "复制 ${jar_files[$index]}$target_file_without_version 完成"
done

cp "im-tcp/src/main/resources/application-docker.yml" "docker/build/tcp/application.yml"
echo "复制 im-tcp/src/main/resources/application-docker.yml 到 docker/build/tcp/application.yml"
13 changes: 7 additions & 6 deletions deploy.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

# 使用说明,用来提示输入参数
usage(){
echo "--------------------------------"
echo "::: Welcome to IM-WhaleShark :::"
echo "Usage: sh 执行脚本.sh [base|services|stop|rm]"
exit 1
echo "Usage: sh running.sh [base|services|stop|rm|rmi]"
exit 1
}

# Check if Docker is installed
Expand All @@ -29,22 +30,22 @@ fi

# 启动基础环境(必须)
base(){
$COMPOSE_COMMAND up -d im-mysql im-redis im-zookeeper im-rabbitmq
$COMPOSE_COMMAND up -d im-mysql im-redis im-zookeeper im-rabbitmq
}

# 启动程序模块(必须)
services(){
$COMPOSE_COMMAND up -d im-domain im-message-store im-tcp
$COMPOSE_COMMAND up -d im-domain im-message-store im-tcp
}

# 关闭所有环境/模块
stop(){
$COMPOSE_COMMAND stop
$COMPOSE_COMMAND stop
}

# 删除所有环境/模块
rm(){
$COMPOSE_COMMAND rm
$COMPOSE_COMMAND rm
}

# 删除所有未使用的镜像
Expand Down
15 changes: 9 additions & 6 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ services:
privileged: true
volumes:
- ./docker/mysql/conf:/etc/mysql/conf.d
- ./docker/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf
- ./docker/mysql/logs:/logs
- ./docker/mysql/data:/var/lib/mysql
- ./docker/mysql/db:/docker-entrypoint-initdb.d/
Expand All @@ -30,10 +31,10 @@ services:
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 20s
timeout: 5s
retries: 3
ports:
- "13306:3306"
- "3306:3306"
networks:
- im-network

Expand All @@ -49,7 +50,7 @@ services:
healthcheck:
test: ["CMD-SHELL", "zkOk=$(echo stat | nc localhost 2181 | grep Mode); if [ -z \"$zkOk\" ]; then exit 1; fi"]
interval: 10s
timeout: 20s
timeout: 5s
retries: 3
ports:
- "2181:2181"
Expand Down Expand Up @@ -90,7 +91,7 @@ services:

# IM Domain 容器
im-domain:
container_name: im_domain
container_name: im-domain
build:
context: ./docker/build/domain
restart: always
Expand Down Expand Up @@ -135,8 +136,9 @@ services:
context: ./docker/build/tcp
restart: always
ports:
- "19000:19000" # springboot 启动端口
- "19001:19001" # tcp 端口
- "19003:19003" # ws 端口
- "19002:19002" # ws 端口
- "5005:5005"
depends_on:
- im-redis
Expand All @@ -151,4 +153,5 @@ services:

networks:
im-network:
driver: host
driver: bridge

13 changes: 13 additions & 0 deletions docker/mysql/conf/hmy.cnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000
[mysql]
default-character-set = utf8
[mysql.server]
default-character-set = utf8
[mysqld_safe]
default-character-set = utf8
[client]
default-character-set = utf8
10 changes: 5 additions & 5 deletions docker/mysql/db/im_core.sql
Original file line number Diff line number Diff line change
Expand Up @@ -170,10 +170,10 @@ CREATE TABLE im_message_body

CREATE TABLE im_message_history
(
app_id INT(20) NOT NULL COMMENT 'APP_ID',
from_id VARCHAR(50) NOT NULL COMMENT 'FROM_ID',
to_id VARCHAR(50) NOT NULL COMMENT 'TO_ID',
owner_id VARCHAR(50) NOT NULL COMMENT 'OWNER_ID',
app_id INT(20) NOT NULL COMMENT 'app_id',
from_id VARCHAR(50) NOT NULL COMMENT 'from_id',
to_id VARCHAR(50) NOT NULL COMMENT 'to_id',
owner_id VARCHAR(50) NOT NULL COMMENT 'owner_id',
message_key BIGINT(50) NOT NULL COMMENT 'messageBodyId',
create_time BIGINT NULL,
sequence BIGINT NULL,
Expand Down Expand Up @@ -212,4 +212,4 @@ INSERT INTO im_core.im_user_data (user_id, app_id, nick_name, password, photo, u
INSERT INTO im_core.im_user_data (user_id, app_id, nick_name, password, photo, user_sex, birth_day, location, self_signature, friend_allow_type, forbidden_flag, disable_add_friend, silent_flag, user_type, del_flag, extra) VALUES ('10007', 10001, '孔杰', 'deserunt', 'http://dummyimage.com/400x400', 1, '2009-10-28', 'ex anim fugiat ut', 'nulla laboris ea do', 1, 0, 0, 0, 1, 0, 'id ipsum veniam');
INSERT INTO im_core.im_user_data (user_id, app_id, nick_name, password, photo, user_sex, birth_day, location, self_signature, friend_allow_type, forbidden_flag, disable_add_friend, silent_flag, user_type, del_flag, extra) VALUES ('10008', 10001, '薛秀英', 'aliquip', 'http://dummyimage.com/400x400', 2, '2014-05-29', 'Duis tempor minim quis', 'in', 1, 0, 0, 0, 1, 0, 'ut sunt');
INSERT INTO im_core.im_user_data (user_id, app_id, nick_name, password, photo, user_sex, birth_day, location, self_signature, friend_allow_type, forbidden_flag, disable_add_friend, silent_flag, user_type, del_flag, extra) VALUES ('admin', 10001, 'admin', null, null, null, null, null, null, 1, 0, 0, 0, 100, 0, null);
INSERT INTO im_core.im_user_data (user_id, app_id, nick_name, password, photo, user_sex, birth_day, location, self_signature, friend_allow_type, forbidden_flag, disable_add_friend, silent_flag, user_type, del_flag, extra) VALUES ('bantanger', 10001, '半糖', null, null, null, null, null, null, 2, 0, 0, 0, 1, 0, null);
INSERT INTO im_core.im_user_data (user_id, app_id, nick_name, password, photo, user_sex, birth_day, location, self_signature, friend_allow_type, forbidden_flag, disable_add_friend, silent_flag, user_type, del_flag, extra) VALUES ('bantanger', 10001, '半糖', null, null, null, null, null, null, 2, 0, 0, 0, 1, 0, null);
13 changes: 0 additions & 13 deletions im-codec/im-codec.iml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,18 @@
@Slf4j
public class WebSocketMessageDecoderHandler extends MessageToMessageDecoder<BinaryWebSocketFrame> {
@Override
protected void decode(ChannelHandlerContext ctx, BinaryWebSocketFrame msg, List<Object> out) throws Exception {
protected void decode(ChannelHandlerContext ctx, BinaryWebSocketFrame msg, List<Object> out) {

ByteBuf content = msg.content();
if (content.readableBytes() < 28) {
return;
}
Message message = ByteBufToMessageUtils.transition(content);
Message message = null;
try {
message = ByteBufToMessageUtils.transition(content);
} catch (Exception e) {
log.error("", e);
}
if (message == null) {
return;
}
Expand Down
13 changes: 0 additions & 13 deletions im-common/im-common.iml

This file was deleted.

3 changes: 1 addition & 2 deletions im-domain/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,5 @@ RUN echo 'Asia/Shanghai' >/etc/timezone

COPY ./jar/im-domain.jar /opt/application/im-domain.jar
COPY application-docker.yml /opt/application/application.yml
COPY logback-spring.xml /opt/application/logback-spring.xml

ENTRYPOINT ["java", "-jar" ,"/opt/application/im-domain.jar", "--logging.config=/opt/application/logback-spring.xml"]
ENTRYPOINT ["java", "-jar" ,"/opt/application/im-domain.jar", "--spring.config.location=/opt/application/application.yml"]
8 changes: 0 additions & 8 deletions im-domain/im-domain.iml

This file was deleted.

Loading

0 comments on commit 394d82e

Please sign in to comment.