diff --git a/dsBase/src/main/java/com/dsideal/base/BaseApplication.java b/dsBase/src/main/java/com/dsideal/base/BaseApplication.java index 2b1253d3..d8e05cdc 100644 --- a/dsBase/src/main/java/com/dsideal/base/BaseApplication.java +++ b/dsBase/src/main/java/com/dsideal/base/BaseApplication.java @@ -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); } diff --git a/dsBase/src/main/resource/application_ali.yaml b/dsBase/src/main/resource/application_ali.yaml new file mode 100644 index 00000000..0af87d49 --- /dev/null +++ b/dsBase/src/main/resource/application_ali.yaml @@ -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/ + diff --git a/dsBase/src/main/resource/application_pro.yaml b/dsBase/src/main/resource/application_pro.yaml index 0af87d49..7673bd7f 100644 --- a/dsBase/src/main/resource/application_pro.yaml +++ b/dsBase/src/main/resource/application_pro.yaml @@ -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 的模板配置路径 diff --git a/dsBuild/src/main/java/Publish.java b/dsBuild/src/main/java/Publish.java index ac75818f..d2f0e47b 100644 --- a/dsBuild/src/main/java/Publish.java +++ b/dsBuild/src/main/java/Publish.java @@ -30,6 +30,9 @@ public class Publish { int choiceProject = PublishUtil.userSelectProject(listProject); //让用户选择要发布的仓库 Kv choiceWarehouse = PublishUtil.userSelectWarehouse(); + //让用户选择使用哪个配置文件进行打镜像? + //这个项目下有以application_?.yaml形式的配置文件,分配ID为1,2,3,...,让用户选择使用哪个进行镜像打包 + 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); } } diff --git a/dsBuild/src/main/java/Util/PublishUtil.java b/dsBuild/src/main/java/Util/PublishUtil.java index 7286337b..04c20ec9 100644 --- a/dsBuild/src/main/java/Util/PublishUtil.java +++ b/dsBuild/src/main/java/Util/PublishUtil.java @@ -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 listProject, int choiceProject) throws IOException { + //输出choice对应的项目名称 + List 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() + "之间的数值!"); // 提示用户输入不正确 + } + } + } } diff --git a/dsRes/Dockerfile b/dsRes/Dockerfile new file mode 100644 index 00000000..65a764b9 --- /dev/null +++ b/dsRes/Dockerfile @@ -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" ]