main
黄海 10 months ago
parent 16c2da209a
commit d9d28eed13

@ -36,7 +36,10 @@ public class BaseApplication extends JFinalConfig {
public static String getEnvPrefix() {
String myEnvVar = System.getenv("WORKING_ENV");
return myEnvVar == null ? "dev" : "pro";
if (myEnvVar == null) {
myEnvVar = "dev";
}
return myEnvVar;
}
public static void main(String[] args) {
@ -158,7 +161,7 @@ public class BaseApplication extends JFinalConfig {
me.add(masterArp);
me.add(slaveArp);
// 用于缓存模块的redis服务
RedisPlugin redis = new RedisPlugin("Redis", PropKit.get("redis.ip"), PropKit.getInt("redis.port"), 10 * 1000,PropKit.get("redis.password"));
RedisPlugin redis = new RedisPlugin("Redis", PropKit.get("redis.ip"), PropKit.getInt("redis.port"), 10 * 1000, PropKit.get("redis.password"));
//启动redis组件
me.add(redis);
}

@ -0,0 +1,31 @@
# 上传文件的临时路径
uploadTempPath: /tmp
# JWT
SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM
# 生成Token的密码
CookieMd5SingPwd: DsideaL4r5t6y7u
mysql:
# 数据库信息
driverClassName: com.mysql.cj.jdbc.Driver
user: ylt
password: Ycharge666
jdbcUrl : jdbc:mysql://rm-bp1ux6tuk49er80t9.mysql.rds.aliyuncs.com:3306/ds_db?useUnicode=true&characterEncoding=UTF-8
redis:
ip: r-bp14c1p5j5lkpw1jc2.redis.rds.aliyuncs.com
port: 6379
password: Ycharge666
# ==============================================================
jwt:
# 生成Token的密码
CookieMd5SingPwd: DsideaL4r5t6y7u
excel:
# 导出excel 的模板配置路径
excelExportTemplatePathSuffix: /ExcelExportTemplate/
# 导入excel 的模板配置路径
ExcelImportTemplatePathSuffix: /ExcelImportTemplate/

@ -1,5 +1,5 @@
# 上传文件的临时路径
uploadTempPath: /tmp
uploadTempPath: c:/Windows/Temp
# JWT
SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM
# 生成Token的密码
@ -8,20 +8,17 @@ CookieMd5SingPwd: DsideaL4r5t6y7u
mysql:
# 数据库信息
driverClassName: com.mysql.cj.jdbc.Driver
user: ylt
password: Ycharge666
jdbcUrl : jdbc:mysql://rm-bp1ux6tuk49er80t9.mysql.rds.aliyuncs.com:3306/ds_db?useUnicode=true&characterEncoding=UTF-8
user: root
password: DsideaL147258369
jdbcUrl : jdbc:mysql://10.10.14.210:22066/ds_db?rewriteBatchedStatements=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
redis:
ip: r-bp14c1p5j5lkpw1jc2.redis.rds.aliyuncs.com
port: 6379
password: Ycharge666
ip: 10.10.14.210
port: 18890
password:
# ==============================================================
jwt:
# 生成Token的密码
CookieMd5SingPwd: DsideaL4r5t6y7u
excel:
# 导出excel 的模板配置路径

@ -30,6 +30,9 @@ public class Publish {
int choiceProject = PublishUtil.userSelectProject(listProject);
//让用户选择要发布的仓库
Kv choiceWarehouse = PublishUtil.userSelectWarehouse();
//让用户选择使用哪个配置文件进行打镜像?
//这个项目下有以application_?.yaml形式的配置文件分配ID为123...,让用户选择使用哪个进行镜像打包
String choiceConfig = PublishUtil.userSelectConfig(listProject,choiceProject);
//这个项目是什么类型?
String projectAttribute = PublishUtil.getProjectAttribute(choiceProject, listProject);
@ -50,6 +53,6 @@ public class Publish {
isStatic = true;
}
//开始打包
PublishUtil.publish(projectName, isStatic, workingPath, localLibPath, choiceWarehouse);
PublishUtil.publish(projectName, isStatic, workingPath, localLibPath, choiceWarehouse,choiceConfig);
}
}

@ -11,9 +11,8 @@ import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.*;
import java.io.FilenameFilter;
public class PublishUtil {
@ -38,7 +37,7 @@ public class PublishUtil {
* docker tag 19a54d2204aa registry.cn-hangzhou.aliyuncs.com/yltcharge/jdk:21
* docker push registry.cn-hangzhou.aliyuncs.com/yltcharge/jdk:21
*/
public static void publish(String projectName, boolean isStatic, String workingPath, String localLibPath, Kv choiceWarehouse) throws Exception {
public static void publish(String projectName, boolean isStatic, String workingPath, String localLibPath, Kv choiceWarehouse,String choiceConfig) throws Exception {
System.out.println("正在生成" + projectName + "的镜像...");
//配置文件
String path = PathKit.getRootClassPath() + "\\publishImage.json";
@ -129,12 +128,14 @@ public class PublishUtil {
//登录镜像仓库
//处理一下Dockerfile中的JDK21此用问题因为不同的打包操作需要登录不同的仓库这里临时用shell修改一下
String remoteDockerFile = remotePath + "Dockerfile";
doLogin(ssh, choiceWarehouse.getStr("username"), choiceWarehouse.getStr("password"));
String cmd = "sed -i '1s/^FROM .*/FROM registry.cn-hangzhou.aliyuncs.com\\/" + choiceWarehouse.getStr("name") + "\\/jdk:21/' " + remoteDockerFile;
ssh.exec(cmd);
System.out.println("仓库登录成功修改JDK21的引用镜像成功!");
//修改镜像要用的配置文件
cmd="sed -i 's|ENV WORKING_ENV=\"pro\"|ENV WORKING_ENV=\""+choiceConfig+"\"|g'";
ssh.exec(cmd);
System.out.println("环境变量修改成功!");
//删除所有镜像
cmd = "docker rmi -f $(docker images -q)";
@ -298,13 +299,70 @@ public class PublishUtil {
kv.set("password", "DsideaL4r5t6y7u");
System.out.println("您选择的仓库是:黄海私人仓库");
}
if (choice == 1 || choice == 2 ) {
if (choice == 1 || choice == 2) {
break; // 如果输入正确,退出循环
} else {
System.out.println("输入不正确请输入1 或者 2 !"); // 提示用户输入不正确
}
}
scanner.close(); // 关闭Scanner对象
return kv;
}
/**
* 使
*
* @param listProject
* @param choiceProject
* @return
* @throws IOException
*/
public static String userSelectConfig(List<ProjectBean> listProject, int choiceProject) throws IOException {
//输出choice对应的项目名称
List<String> setConfigFiles = new ArrayList<>();
for (ProjectBean projectBean : listProject) {
if (projectBean.getId() == choiceProject) {
System.out.println("您选择的项目是:" + projectBean.getDevProjectName());
String basedir = new File(System.getProperty("user.dir")).getCanonicalPath() + "\\";
String directoryPath = basedir + projectBean.getDevProjectName() + "\\src\\main\\resource\\";
// 创建一个 File 对象,代表目录
File directory = new File(directoryPath);
// 获取目录下的所有文件和子目录
File[] files = directory.listFiles();
// 定义一个 FilenameFilter 来过滤文件
FilenameFilter filter = (dir, name) -> {
// 检查是否是文件以及文件名是否匹配 application_?.yaml 模式
return new File(dir, name).isFile() && name.matches("application_.*\\.yaml");
};
if (files != null) {
// 过滤出符合条件的文件
for (File file : files) {
if (filter.accept(directory, file.getName())) {
setConfigFiles.add(file.getName());
}
}
} else {
System.out.println("项目" + projectBean.getDevProjectName() + "没有配置文件");
System.exit(0);
}
break;
}
}
Scanner scanner = new Scanner(System.in); // 创建Scanner对象来读取控制台输入
//输出choice对应的项目名称
while (true) {
System.out.println("请选择您本次要发布的配置文件:");
for (int i = 0; i < setConfigFiles.size(); i++) {
System.out.print((i + 1) + ":" + setConfigFiles.get(i) + " ");
}
System.out.println();
int choice = scanner.nextInt(); // 读取用户输入的整数
if (choice >= 1 && choice <= setConfigFiles.size()) {
return setConfigFiles.get(choice - 1);
} else {
System.out.println("输入不正确请输入1与 " + setConfigFiles.size() + "之间的数值!"); // 提示用户输入不正确
}
}
}
}

@ -0,0 +1,19 @@
FROM registry.cn-hangzhou.aliyuncs.com/yltcharge/jdk:21
# WORKDIR指令用于设置容器内部的工作目录即后续指令执行时的当前目录。当Docker容器启动并执行命令时这些命令将在WORKDIR指定的目录中执行。
WORKDIR /root
# ENV TZ这样的用法通常是用来设置时区环境变量TZ代表Time Zone
ENV TZ=Asia/Shanghai
# 将target文件夹下的jar包gw-charge.jar复制到容器的/root目录下
COPY ./lib /root/lib
COPY ./target /root/target
#设置这个环境变量后您可以在Docker容器中启动Java应用程序时使用这些参数。
ENV JAVA_OPTS="-Xms512m -Xmx1024m"
# 标识为生产环境
ENV WORKING_ENV="pro"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -cp /root/target/classes:/root/lib/* com.dsideal.resoucre.ResApplication" ]
Loading…
Cancel
Save