Skip to content

Commit 056cab6

Browse files
committed
docs: add Dockerfile build steps (resolved #44)
1 parent a00871b commit 056cab6

File tree

1 file changed

+61
-5
lines changed

1 file changed

+61
-5
lines changed

README.md

+61-5
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@ MemShellParty 是一款可本地部署的一键生成常见中间件框架内存
1919

2020
MemShellParty 出现的原因有以下几个:
2121

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)
2325
生成一个 WAS 的内存马不能用,调了半天修好了)。
26+
2427
2.[Javassist](https://www.javassist.org/) 实在是太多了,字符串拼接的方式去弄方法 code
25-
实在是看得眼睛疼,又不好维护,代码组织合理的话其实都可以,不过做项目我还是推荐 [Byte Buddy](https://bytebuddy.net/),高封装提供的
28+
实在是看得眼睛疼,又不好维护,代码组织合理的话其实都可以,不过做项目我还是推荐 [Byte Buddy](https://bytebuddy.net/)
29+
,高封装提供的
2630
API 很好用的。单个利用脚本的话确实 [Javassist](https://www.javassist.org/) 来得快,而且很多中间件也自带依赖直接能打。
2731
3. [Java Memshell Generator](https://github.com/pen4uin/java-memshell-generator)
2832
的出现确实帮大忙了,但是其极少的交互逻辑对于一个应用来说是难以接受的,刚好学习了前端对 UX 也感兴趣(对 Desktop
@@ -82,13 +86,13 @@ docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party ghcr.nju
8286
# 移除之前部署的
8387
docker rm -f memshell-party
8488

85-
# 使用之前的部署命令,重新部署(会自动拉取最新的镜像部署)
89+
# 使用之前的部署命令重新部署(会自动拉取最新的镜像部署)
8690
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latest
8791
```
8892

89-
### 本地构建部署
93+
### 本地构建
9094

91-
> 适合想编写代码的小伙伴,使用 Git Clone 下载到本地,并构建前后端项目以使用
95+
> 适合想编写代码的小伙伴,使用 Git Clone 下载到本地,并构建前后端项目以供使用
9296
9397
首先需要下载 [bun](https://bun.sh/),这是一款用于构建前端服务工具。
9498

@@ -133,6 +137,58 @@ docker buildx build -t memshell-party:latest . --load
133137
docker run -it -d --name memshell-party -p 8080:8080 memshell-party:latest
134138
```
135139

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+
136192
## 适配情况
137193

138194
已兼容 Java6 ~ Java8、Java9、Java11、Java17、Java21

0 commit comments

Comments
 (0)