Closed lammycode closed 5 months ago
这是我的预览环境docker部署文件
version: "3"
services:
app_server:
build:
context: .
dockerfile: app.Dockerfile
container_name: boot_admin_app
restart: unless-stopped
environment:
TZ: Asia/Shanghai
JAVA_TOOL_OPTIONS: "-Duser.timezone=Asia/Shanghai -DSpring.profiles.active=hb0730 -Xms256m -Xmx512m"
networks:
- boot-admin-net
web_server:
build:
context: .
dockerfile: web.Dockerfile
container_name: boot_admin_web
restart: unless-stopped
environment:
TZ: Asia/Shanghai
JAVA_TOOL_OPTIONS: "-Duser.timezone=Asia/Shanghai -DSpring.profiles.active=hb0730 -Xms256m -Xmx512m"
ports:
- "9002:9002"
depends_on:
- depends_on
networks:
- boot-admin-net
job_server:
build:
context: .
dockerfile: job.Dockerfile
container_name: boot_admin_job
restart: unless-stopped
environment:
TZ: Asia/Shanghai
JAVA_TOOL_OPTIONS: "-Duser.timezone=Asia/Shanghai -DSpring.profiles.active=hb0730 -Xms256m -Xmx512m"
networks:
- boot-admin-net
ui_server:
build:
context: .
dockerfile: ui.Dockerfile
container_name: boot_admin_ui
restart: unless-stopped
environment:
TZ: Asia/Shanghai
ports:
- "8082:80"
networks:
- boot-admin-net
networks:
boot-admin-net:
driver: bridge
FROM eclipse-temurin:17-jre as builder
WORKDIR application
ARG JAR_FILE=app-*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract
FROM eclipse-temurin:17-jre WORKDIR application COPY --from=builder application/dependencies/ ./ COPY --from=builder application/spring-boot-loader/ ./ COPY --from=builder application/snapshot-dependencies/ ./ COPY --from=builder application/application/ ./ ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]
- job.Dockerfile
```Dockerfile
FROM eclipse-temurin:17-jre as builder
WORKDIR application
ARG JAR_FILE=job-*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract
FROM eclipse-temurin:17-jre
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]
FROM nginx:stable-alpine as production-stage
ADD dist.tar.gz /usr/share/nginx/html/ EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
- web.Dockerfile
```Dockerfile
FROM eclipse-temurin:17-jre as builder
WORKDIR application
ARG JAR_FILE=web-*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract
FROM eclipse-temurin:17-jre
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]
nginx配置
server {
listen 80;
listen [::]:80;
server_name xxxx;
client_max_body_size 1024m;
location / {
proxy_pass http://172.31.170.5:8082/;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /pvs/ {
proxy_pass http://172.31.170.5:9002/;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Prefix /pvs;
}
}
注意点
dist.tar.tz
需要进入前端项目dist目下进行tar -zcvf dist.tar.gz *
DSpring.profiles.active
替换自己的环境maven 构建只有进入项目目录mvn clean -DskipTests=true package
启动没有先后顺序,只有理清web
,app
等module的关系即可,把相关的sql脚本导入到mysql即可
如果说本地启动测试一下,可以直接使用项目中docker文件夹下下docker-compose.infra.yml ,然后将相关数据导入即可
感谢作者回复,我在本地启动测试。上一次测试定时任务中的有参测试不成功 然后后台报错,尝试ping了后台端口除了9001 9002 9004 之外都不通,因为我不是做后端的所以没太懂是不是应用没有启动完全,不知道其他几个端口是否是长时间开通的。但今天突然就成功了。。。还有一个问题就是为啥需要把后台分为3个应用,这个和spring cloud有关系吗 还是单纯就是为了把应用分离
尝试ping了后台端口除了9001 9002 9004 之外都不通
暂时只有9001 APP应用
,9002 WEB应用
,9004 JOB应用
以及 RPC的 12200 App RPC server
和 12201 Job RPC server
,其他端口计划可能占用, 项目采用的是sofa RPC 的 blot
协议直连模式
为啥需要把后台分为3个应用,这个和spring cloud有关系吗 还是单纯就是为了把应用分离
模块与模块之间,服务与服务之间的耦合问题,前端服务与后端服务分离问题,如果有能力可以自行组合,比如把 web
dao
合在一起,比如也可以把modules
下的job
模块与app
进行合并(可能涉及代码相关变动)
了解 感谢作者
作者你好 我研究了几天还是没有理清楚这个系统的架构例如modules/sys-module/sys-api/src/main/java/com/hb0730/rpc/sys/system/service/NoticeRpcService.java这个接口的实现类为什么放到了app/src/main/java/com/hb0730/sys/system/rpc/NoticeRpcServiceImpl.java 这个路径下 前者在modules下 而后者却在app下 如果能出一个关于项目结构的设计思路和相关文档就好了
RPC API 分为 Server/Client
作者你好 我研究了几天还是没有理清楚这个系统的架构例如modules/sys-module/sys-api/src/main/java/com/hb0730/rpc/sys/system/service/NoticeRpcService.java这个接口的实现类为什么放到了app/src/main/java/com/hb0730/sys/system/rpc/NoticeRpcServiceImpl.java 这个路径下 前者在modules下 而后者却在app下 如果能出一个关于项目结构的设计思路和相关文档就好了
app/src/main/java/com/hb0730/sys/system/rpc/NoticeRpcServiceImpl.java 为实现端即 Server, 对应应该有一个Client端对外即web
有一点没太明白 这是一种代码组织方式 还是目前的代码是同一个项目内未来会通过RPC调用的方式拆分为多个项目
有一点没太明白 这是一种代码组织方式 还是目前的代码是同一个项目内未来会通过RPC调用的方式拆分为多个项目
方便服务与服务间的调用,也方便模块间的开发,开发完就是jar,方便引入
理解一些但还没完全明白 是否有相关的文档介绍这样的开发方式
理解一些但还没完全明白 是否有相关的文档介绍这样的开发方式
由于有些模块还未开发完成,暂未整理相关文档介绍,
将 job server
拆分为job-biz
,job-api
,后续如果不想单独作为服务,即可把job-biz
引入到app server
,核心不需要动,只需要适当适配一下即可使用
大概明白了这个逻辑 细节部分我再多看下代码。感谢作者
RT,感谢作者分享代码