From 1dd9331d7575a92aa850ff91f958f26e684aaed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=A6=8F=E8=B4=A2?= <1471584931@qq.com> Date: Mon, 13 Apr 2026 16:30:18 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9jar=E5=88=86?= =?UTF-8?q?=E7=89=87=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD=202=E3=80=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BC=96=E8=AF=91=E6=B5=8B=E8=AF=95=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E9=95=9C=E5=83=8F=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/pictc/utils/IoUtils.java | 40 +++++++++++++++ .../src/main/docker/Dockerfile-arm64 | 38 ++++++++++++++ .../src/main/docker/build-arm.bat | 50 +++++++++++++++++++ .../src/main/resources/bootstrap-test.yml | 2 +- 4 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/Dockerfile-arm64 create mode 100644 itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/build-arm.bat diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/IoUtils.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/IoUtils.java index 3226609..46f7dce 100644 --- a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/IoUtils.java +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/IoUtils.java @@ -25,7 +25,9 @@ import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinTask; import java.util.concurrent.RecursiveTask; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class IoUtils { private final static Charset charset=Charset.forName("UTF-8"); @@ -237,6 +239,44 @@ public class IoUtils { fos.flush(); closeQuietly(fos); } + + public static void delete(File file) { + delete(file, false); + } + + public static void delete(File file,boolean all) { + if(all) { + if(file.isDirectory()) { + File[] childs = file.listFiles(); + if(childs!=null) { + for (int i = 0; i < childs.length; i++) { + if(childs[i].isDirectory()) { + delete(childs[i],all); + }else { + if(!childs[i].delete()) { + log.warn("文件【"+childs[i].getName()+"】删除失败"); + } + } + } + } + } + } + if(!file.delete()) { + log.warn("文件【"+file.getName()+"】删除失败"); + } + } + + + public static void stringToFile(String content, File file) throws IOException { + if (!file.exists()) { + //createDirectory(file.getParentFile()); + file.createNewFile();// 将压缩文件内容写入到这个文件中 + } + FileOutputStream fos = new FileOutputStream(file); + fos.write(content.getBytes(charset)); + fos.flush(); + closeQuietly(fos); + } public static void writeFile(File file, OutputStream out, boolean close) throws IOException { FileInputStream in = null; diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/Dockerfile-arm64 b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/Dockerfile-arm64 new file mode 100644 index 0000000..51c8095 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/Dockerfile-arm64 @@ -0,0 +1,38 @@ +FROM --platform=linux/arm64 openjdk-arm64:8-jre + + +RUN mkdir -p /root/logs/java/ \ + && mkdir -p /scm/logs/ \ + && mkdir -p /opt/app/ \ + && mkdir -p /uploadFile/ \ + && mkdir -p /var/log/app \ + && mkdir -p /opt/app/logs \ + && mkdir -p /opt/agent/config + +ENV TZ "Asia/Shanghai" + +ADD ./skywalking-agent.jar /opt/agent/skywalking-agent.jar +ADD ./agent.config /opt/agent/config/agent.config + +RUN echo "set fileencodings=utf-8,gbk,gb2312,gb18030,cp936,latin1 \n set fenc=utf-8 \n set tenc=utf-8 \n set enc=utf-8 \n" |tee ~/.vimrc + + +ARG JAR_FILE +ARG PRO_FILE +ARG SOURCE_NAME + +ADD ./startApp.sh /opt/app/ +RUN chmod u+x /opt/app/startApp.sh +ADD ./${SOURCE_NAME} /opt/app/app.jar +#RUN test -f /opt/app/app.jar || { echo "Error: JAR file not found at ${SOURCE_NAME}"; exit 1; } + +#应用名称 +ENV APP_NAME=itc-pcitc-mdm +#skywalking-oap-server地址 +ENV SKYWALKING_SERVER=10.10.2.102:11800 +ENV ENV_APP_FILE_PATH=/opt/app/app.jar +ENV ENV_APP_PRO_FILE=local + +EXPOSE 8096 5005 + +ENTRYPOINT ["/opt/app/startApp.sh"] \ No newline at end of file diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/build-arm.bat b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/build-arm.bat new file mode 100644 index 0000000..f5f4271 --- /dev/null +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/build-arm.bat @@ -0,0 +1,50 @@ +@echo off +chcp 65001 >nul +title 一键构建Docker镜像 +color 0A + +:: ====================== 【只需修改这里3个参数】 ====================== +:: 镜像名称 +set IMAGE_NAME=itc-pcitc-mdm-arm64 +:: 你的应用Jar包全名(当前文件夹必须有这个文件) +set SOURCE_JAR=app.jar +:: ==================================================================== + +:: ========== 自动获取当前系统时间,格式:YYYY-MM-dd-hh:mm:ss ========== +for /f "skip=1 tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do ( + set "dt=%%a" +) +:: 格式:YYYYMMDD-HHmmss(Docker 100%合法) +set IMAGE_TAG=%dt:~0,4%%dt:~4,2%%dt:~6,2%-%dt:~8,2%%dt:~10,2%%dt:~12,2% +:: ==================================================================== + +echo. +echo ============== 开始构建Docker镜像 ============== +echo 镜像名称:%IMAGE_NAME% +echo 镜像版本:%IMAGE_TAG% +echo 打包Jar:%SOURCE_JAR% +echo. + +:: ✅ 修复:Windows 正确设置 BuildKit 环境变量 +set DOCKER_BUILDKIT=1 + +:: 执行构建命令(ARM64 架构,适配你的 Dockerfile) +docker build ^ +--platform=linux/arm64 ^ +-f Dockerfile-arm64 ^ +-t %IMAGE_NAME%:%IMAGE_TAG% ^ +--build-arg SOURCE_NAME=%SOURCE_JAR% ^ +. + +:: 判断构建是否成功 +if %errorlevel% equ 0 ( + echo. + echo ============== 构建成功! ============== + echo 运行容器命令:docker run -d --name %IMAGE_NAME% -p 8092:8092 -p 5005:5005 %IMAGE_NAME%:%IMAGE_TAG% +) else ( + echo. + echo ============== 构建失败!请检查错误信息 ============== +) + +echo. +pause \ No newline at end of file diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-test.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-test.yml index 994298c..02de9f5 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-test.yml +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap-test.yml @@ -7,7 +7,7 @@ spring: group: DNE username: nacos password: Lng@123 - extension-configs: + extension-configs: - data-id: global-local.yml refresh: true group: DNE