@@ -19,10 +19,14 @@ MemShellParty 是一款可本地部署的一键生成常见中间件框架内存
19
19
20
20
MemShellParty 出现的原因有以下几个:
21
21
22
- 1 . 工作中有时候客户会有个别中间件的内存马测试需求,这个时候临时写一个太慢又太烦,在不忙的时候做一个工具,有需求就生成一个多好(之前用 [ Java Memshell Generator] ( https://github.com/pen4uin/java-memshell-generator )
22
+ 1 .
23
+
24
+ 工作中有时候客户会有个别中间件的内存马测试需求,这个时候临时写一个太慢又太烦,在不忙的时候做一个工具,有需求就生成一个多好(之前用 [ Java Memshell Generator] ( https://github.com/pen4uin/java-memshell-generator )
23
25
生成一个 WAS 的内存马不能用,调了半天修好了)。
26
+
24
27
2 . 写 [ Javassist] ( https://www.javassist.org/ ) 实在是太多了,字符串拼接的方式去弄方法 code
25
- 实在是看得眼睛疼,又不好维护,代码组织合理的话其实都可以,不过做项目我还是推荐 [ Byte Buddy] ( https://bytebuddy.net/ ) ,高封装提供的
28
+ 实在是看得眼睛疼,又不好维护,代码组织合理的话其实都可以,不过做项目我还是推荐 [ Byte Buddy] ( https://bytebuddy.net/ )
29
+ ,高封装提供的
26
30
API 很好用的。单个利用脚本的话确实 [ Javassist] ( https://www.javassist.org/ ) 来得快,而且很多中间件也自带依赖直接能打。
27
31
3 . [ Java Memshell Generator] ( https://github.com/pen4uin/java-memshell-generator )
28
32
的出现确实帮大忙了,但是其极少的交互逻辑对于一个应用来说是难以接受的,刚好学习了前端对 UX 也感兴趣(对 Desktop
@@ -82,13 +86,13 @@ docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party ghcr.nju
82
86
# 移除之前部署的
83
87
docker rm -f memshell-party
84
88
85
- # 使用之前的部署命令,重新部署 (会自动拉取最新的镜像部署)
89
+ # 使用之前的部署命令重新部署 (会自动拉取最新的镜像部署)
86
90
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latest
87
91
```
88
92
89
- ### 本地构建部署
93
+ ### 本地构建
90
94
91
- > 适合想编写代码的小伙伴,使用 Git Clone 下载到本地,并构建前后端项目以使用
95
+ > 适合想编写代码的小伙伴,使用 Git Clone 下载到本地,并构建前后端项目以供使用
92
96
93
97
首先需要下载 [ bun] ( https://bun.sh/ ) ,这是一款用于构建前端服务工具。
94
98
@@ -133,6 +137,58 @@ docker buildx build -t memshell-party:latest . --load
133
137
docker run -it -d --name memshell-party -p 8080:8080 memshell-party:latest
134
138
```
135
139
140
+ ### Dockerfile 一键构建
141
+
142
+ > 适合于希望构建自定义访问路径的小伙伴,例如 NGINX 反代的场景([ #44 ] ( https://github.com/ReaJason/MemShellParty/issues/44 ) )
143
+
144
+ 下载项目根目录的 [ Dockerfile] ( ./Dockerfile )
145
+
146
+ - VERSION: 版本信息,随意,建议用最新的 tag 号,仅作前端展示
147
+ - ROUTE_ROOT_PATH: 前端根路由配置
148
+ - CONTEXT_PATH: 后端访问前缀
149
+
150
+ ``` bash
151
+ # 基础构建
152
+ docker buildx build \
153
+ --build-arg VERSION=1.3.1 \
154
+ -t memshell-party:latest . --load
155
+
156
+ # 基础镜像启动,访问 127.0.0.1:8080
157
+ docker run -it -d -p 8080:8080 memshell-party:latest
158
+
159
+ # 自定义访问路径构建
160
+ docker buildx build \
161
+ --build-arg VERSION=1.3.1 \
162
+ --build-arg ROUTE_ROOT_PATH=/memshell-party \
163
+ --build-arg CONTEXT_PATH=/memshell-party \
164
+ -t memshell-party:latest . --load
165
+
166
+ # 自定义路径构建镜像启动,访问 127.0.0.1:8080/memshell-party
167
+ docker run -it -p 8080:8080 \
168
+ -e BOOT_OPTS=--server.servlet.context-path=/memshell-party \
169
+ memshell-party:latest
170
+ ```
171
+
172
+ 如果需要使用 NGINX 反代,请先使用自定义访问路径构建容器,并配置 NGINX 如下:
173
+
174
+ 其中 ` location /memshell-party ` 、` ROUTE_ROOT_PATH=/memshell-party ` 、` CONTEXT_PATH=/memshell-party ` 和 ` BOOT_OPTS=--server.servlet.context-path=/memshell-party ` 都要一致才行。
175
+
176
+ ``` text
177
+ location /memshell-party {
178
+ proxy_pass http://127.0.0.1:8080;
179
+ proxy_set_header Host $http_host;
180
+ proxy_set_header X-Forwarded-By $server_addr:$server_port;
181
+ proxy_set_header X-Forwarded-For $remote_addr;
182
+ proxy_http_version 1.1;
183
+ proxy_connect_timeout 3s;
184
+ proxy_read_timeout 300s;
185
+ proxy_send_timeout 300s;
186
+ proxy_buffer_size 16k;
187
+ proxy_buffers 8 64k;
188
+ proxy_busy_buffers_size 128k;
189
+ }
190
+ ```
191
+
136
192
## 适配情况
137
193
138
194
已兼容 Java6 ~ Java8、Java9、Java11、Java17、Java21
0 commit comments