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; } }
前端路徑