JeecgBoot使用总结-微服务打包上线
jeecgboot使用微服务打包上线总结。
启动微服务记得先启动nacos、gateway、以及system。
首先环境设置参考官方说明,未进行测试:http://doc.jeecg.com/2043911
在打包之前需要在jeecg-cloud-module中创建启动模块
咱们从上往下一次展示以上图片文件的详细内容
application启动类
package org.jeecg; import org.springframework.beans.factory.annotation.Value; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.util.oConvertUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.Environment; import org.springframework.scheduling.annotation.EnableScheduling; import java.net.InetAddress; import java.net.UnknownHostException; /** * 微服务启动类(采用此类启动项目为微服务模式) * 注意: 需要先在naocs里面创建配置文件,参考文档 http://doc.jeecg.com/2043906 */ @Slf4j @SpringBootApplication @EnableFeignClients(basePackages = {"org.jeecg"}) @EnableScheduling public class JeecgSystemCloudApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(JeecgSystemCloudApplication.class); } public static void main(String[] args) throws UnknownHostException { long startTime = System.currentTimeMillis(); //获取开始时间 ConfigurableApplicationContext application = SpringApplication.run(JeecgSystemCloudApplication.class, args); Environment env = application.getEnvironment(); String ip = InetAddress.getLocalHost().getHostAddress(); String port = env.getProperty("server.port"); String path = oConvertUtils.getString(env.getProperty("server.servlet.context-path")); log.info("\n----------------------------------------------------------\n\t" + "Application Jeecg-Boot is running! Access URLs:\n\t" + "Local: \t\thttp://localhost:" + port + path + "/doc.html\n" + "External: \thttp://" + ip + ":" + port + path + "/doc.html\n" + "Swagger文档: \thttp://" + ip + ":" + port + path + "/doc.html\n" + "----------------------------------------------------------"); System.out.println("第四步=====System系统-启动成功====="); long endTime = System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间:" + (endTime - startTime)/1000 + "秒"); //输出程序运行时间 } }
application.yml配置文件
server: #微服务端口 port: 7020 tomcat: connection-timeout: 60000 spring: main: allow-bean-definition-overriding: true application: name: jeecg-metaverse rabbitmq: host: 192.168.1.14 username: guest password: guest port: 5672 publisher-confirm: true publisher-returns: true virtual-host: / listener: simple: acknowledge-mode: manual #消费者的最小数量 concurrency: 1 #消费者的最大数量 max-concurrency: 1 #是否支持重试 retry: enabled: true
Dockerfile,标红的要注意修改,现在咱们的系统都比较规范,按照这个格式批量修改即可,但是端口号一定不能重复
FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER jeecgos@163.com
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN mkdir -p /jeecg-cloud-metaverse
WORKDIR /jeecg-cloud-metaverse
EXPOSE 9010
ADD ./target/config ./config
ADD ./target/jeecg-cloud-metaverse-start-3.0.jar ./
CMD sleep 1;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-metaverse-start-3.0.jar
pom.xml配置文件,标红的地方记得修改,是哪个微服务模块,就直接引哪个模块
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>jeecg-cloud-module</artifactId> <groupId>org.jeecgframework.boot</groupId> <version>3.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>jeecg-cloud-metaverse-start</artifactId> <description>元宇宙项目微服务启动</description> <dependencies> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-module-metaverse</artifactId> </dependency> <!-- 引入jeecg-boot-starter-cloud依赖 --> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-starter-cloud</artifactId> </dependency> <!--xxl-job定时任务--> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-starter-job</artifactId> </dependency> <!-- 分布式锁依赖 --> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-starter-lock</artifactId> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.yml</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.yml</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
restart.sh,docker的重启脚本,命令看不懂的可以自己查一下,比较简单,标红的记得修改,跟上边dockerfile文件中的要对应上,不然会出错,切记一定要对应上,端口号以及docker名称
docker stop cloud_metaverse_start1.0 docker rm cloud_metaverse_start1.0 docker build -t cloud_metaverse_start:1.0 . docker run -d --name="cloud_metaverse_start1.0" -v /root/docker/jar-cloud/cloud_metaverse_start/target/:/usr/local/tomcat/webapps -p 9010:9010 cloud_metaverse_start:1.0 docker logs -f --tail 20 cloud_metaverse_start1.0
在jeecg-cloud-gateway这个模块下的pom.xml文件引入该微服务启动模块
然后就是最外层的pom.xml文件了,修改nacos的连接属性
接下来就可以准备打包了
通过jeecg-boot-parent打包项目
打包的时候要注意了,如果打包过程中报错了,一定要解决,在Profiles中一定要选择prod,打包后启动项目时能够看到的,而且一定要多次clean,保证已经清除干净,
打包成功后通过Xftp拖过来即可,服务器上各个模块都已经创建好了,按照规范创建即可
文件结构如下
这个路径下的Dockerfile就是上边提到的,还有restart.sh
在target中放jar包
nginx的路径
nginx的配置文件内容
upstream daadmin_api { #ip_hash; server 172.28.250.58:8888; } server { listen 80; listen 443 ssl; server_name daadmin.idawa.cn; ssl_certificate cert/6710862__idawa.cn.pem; #将domain name.pem替换成您证书的文件名称。 ssl_certificate_key cert/6710862__idawa.cn.key; #将domain name.key替换成您证书的密钥文件名称。 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。 ssl_prefer_server_ciphers on; #if ($server_port = 80 ) {return 301 https://$host$request_uri;} server_name_in_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { index index.html index.htm; root html/fe_daadmin/; } location ~ ^/(websocket|sys|fanyi|online|digital_assetas|cg_navi|cg_forum|cg_class|knowledge|project|copyright|it_assets|sheets|outsourcing|financial|bigdata|cg_recruit|pipeline|jiaoyu|system|isystem|customer|creative_app) { proxy_pass http://daadmin_api; #配置方向代理地址 } }
元宇宙nginx,前端访问路径http://www.lionworld.com/index.html
upstream yuan_api { #ip_hash; server 172.28.250.58:9999; } server { listen 80; listen 443 ssl; server_name www.lionworld.com lionworld.com y.idawa.cn yuan.idawa.cn lion.idawa.cn l.idawa.cn; ssl_certificate cert/6710862__idawa.cn.pem; #将domain name.pem替换成您证书的文件名称。 ssl_certificate_key cert/6710862__idawa.cn.key; #将domain name.key替换成您证书的密钥文件名称。 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。 ssl_prefer_server_ciphers on; #if ($server_port = 80 ) {return 301 https://$host$request_uri;} server_name_in_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { index index.html index.htm; root html/fe_yuan/; } location ~ ^/(websocket|sys|fanyi|online|digital_assetas|cg_navi|cg_forum|cg_class|knowledge|project|copyright|it_assets|sheets|outsourcing|financial|bigdata|cg_recruit|pipeline|jiaoyu|system|isystem|customer|creative_app) { proxy_pass http://yuan_api; #配置方向代理地址 proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
前端路径
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通