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 .InetAddress;
import .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: trueDockerfile,标红的要注意修改,现在咱们的系统都比较规范,按照这个格式批量修改即可,但是端口号一定不能重复
FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER jeecgos@
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.jarpom.xml配置文件,标红的地方记得修改,是哪个微服务模块,就直接引哪个模块
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http:///POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:///POM/4.0.0 http:///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;
}
}
前端路径

















