diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e082445 --- /dev/null +++ b/.gitignore @@ -0,0 +1,61 @@ +HELP.md +target/ + +velocity.log + +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +.DS_Store + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + + +### VS Code ### +.vscode/ +/logs +*.log +*.class +*.ctxt +.mtj.tmp/ +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar +hs_err_pid* +replay_pid* +*.vue +*.js +*.ts +/sa-base/target/ +/logs/ +/.idea/ +/sa-base/target/ diff --git a/Dockerfile-dev b/Dockerfile-dev new file mode 100644 index 0000000..1fc795e --- /dev/null +++ b/Dockerfile-dev @@ -0,0 +1,50 @@ +# 第一阶段:使用 Maven + Java8 构建 JAR 包 +FROM maven:3.9.2-eclipse-temurin-8-alpine AS builder + +WORKDIR /app + +# 添加国内 Maven 镜像源 +RUN mkdir -p /root/.m2 && \ + echo ' \ + \ + \ + aliyun \ + * \ + aliyun maven \ + https://maven.aliyun.com/repository/public \ + \ + \ + ' > /root/.m2/settings.xml + +# 复制项目代码 +COPY pom.xml . +COPY sa-admin ./sa-admin +COPY sa-common ./sa-common + +# 构建项目 +RUN mvn clean package -Dmaven.test.skip=true -P dev + +# 第二阶段:使用更小的 Java8 JDK 镜像运行 +FROM eclipse-temurin:8-jdk-alpine + +WORKDIR /app + +# ✅ 安装字体 & libgcc 等依赖 +RUN apk add --no-cache \ + libstdc++ \ + libgcc \ + fontconfig \ + freetype \ + ttf-dejavu + +# 复制构建产物 +COPY --from=builder /app/sa-admin/target/*.jar app.jar + +# 暴露端口(请替换成你实际应用端口) +EXPOSE 5479 + +# 启动应用 +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file diff --git a/Dockerfile-prod b/Dockerfile-prod new file mode 100644 index 0000000..2c93f2c --- /dev/null +++ b/Dockerfile-prod @@ -0,0 +1,50 @@ +# 第一阶段:使用 Maven + Java8 构建 JAR 包 +FROM maven:3.9.2-eclipse-temurin-8-alpine AS builder + +WORKDIR /app + +# 添加国内 Maven 镜像源 +RUN mkdir -p /root/.m2 && \ + echo ' \ + \ + \ + aliyun \ + * \ + aliyun maven \ + https://maven.aliyun.com/repository/public \ + \ + \ + ' > /root/.m2/settings.xml + +# 复制项目代码 +COPY pom.xml . +COPY sa-admin ./sa-admin +COPY sa-common ./sa-common + +# 构建项目 +RUN mvn clean package -Dmaven.test.skip=true -P prod + +# 第二阶段:使用更小的 Java8 JDK 镜像运行 +FROM eclipse-temurin:8-jdk-alpine + +WORKDIR /app + +# ✅ 安装字体 & libgcc 等依赖 +RUN apk add --no-cache \ + libstdc++ \ + libgcc \ + fontconfig \ + freetype \ + ttf-dejavu + +# 复制构建产物 +COPY --from=builder /app/sa-admin/target/*.jar app.jar + +# 暴露端口(请替换成你实际应用端口) +EXPOSE 5477 + +# 启动应用 +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..eeac845 --- /dev/null +++ b/pom.xml @@ -0,0 +1,416 @@ + + 4.0.0 + + net.lab1024 + sa-parent + 3.0.0 + pom + + sa-parent + SmartAdmin project + + + sa-base + sa-admin + + + + 17 + UTF-8 + UTF-8 + 3.3.1 + 2.0.8 + 6.4.3 + 3.5.7 + 3.9.1 + 4.4.0 + 2.0.52 + 1.2.23 + 1.4.2 + 20.0 + 0.9.11 + 2.15.0 + 3.12.0 + 4.4 + 1.26.0 + 1.13 + 1.9 + 2.12.0 + 1.0.0 + 5.2.4 + 1.4 + 1.11.842 + 2.23.1 + 5.8.29 + 2.3 + 3.1 + 1.41.0 + 2.7.0 + 1.80 + 2.13.4 + 2.16.1 + 1.2.0 + 3.25.0 + 2.2 + 2.3.33 + 1.18.1 + 3.1.0 + 4.7.0 + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${springboot.version} + pom + import + + + + + com.baomidou + mybatis-plus-spring-boot3-starter + ${mybatis-plus.version} + + + org.springframework.boot + spring-boot-starter-logging + + + + + + org.springframework.security + spring-security-crypto + ${spring-security-crypto.version} + + + + p6spy + p6spy + ${p6spy.version} + + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + ${knife4j.version} + + + + com.alibaba + fastjson + ${fastjson.version} + + + + + + com.alibaba + druid-spring-boot-3-starter + ${druid.version} + + + + com.googlecode.concurrentlinkedhashmap + concurrentlinkedhashmap-lru + ${google-linkedhashmap.version} + + + + com.google.guava + guava + ${google-guava.version} + + + + org.reflections + reflections + ${reflections.version} + + + guava + com.google.guava + + + + + + commons-io + commons-io + ${commons-io.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + + org.apache.commons + commons-compress + ${commons-compress.version} + + + + commons-codec + commons-codec + ${commons-codec.version} + + + + com.amazonaws + aws-java-sdk-s3 + ${aws-java-sdk.version} + + + commons-logging + commons-logging + + + + + + org.apache.commons + commons-text + ${commons-text.version} + + + + cn.hutool + hutool-all + ${hutool.version} + + + + org.apache.velocity + velocity-engine-core + ${velocity-engine-core.version} + + + org.apache.velocity.tools + velocity-tools-generic + ${velocity-tools.version} + + + + + + cn.dev33 + sa-token-spring-boot3-starter + ${sa-token.version} + + + + + cn.dev33 + sa-token-redis-jackson + ${sa-token.version} + + + + + + org.lionsoul + ip2region + ${ip2region.version} + + + + org.bouncycastle + bcprov-jdk18on + ${bcprov.version} + + + + cn.idev.excel + fastexcel + ${fast-excel.version} + + + logback-classic + ch.qos.logback + + + org.bouncycastle + bcprov-jdk15on + + + + + + org.apache.poi + poi + ${poi.version} + + + + org.apache.poi + poi-ooxml + ${poi.version} + + + + org.apache.poi + poi-scratchpad + ${poi.version} + + + + org.apache.poi + ooxml-schemas + ${ooxml-schemas.version} + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson-datatype-jsr310.version} + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + ${jackson-dataformat-yaml.version} + + + + net.1024lab + smartdb + ${smartdb.version} + + + + + org.redisson + redisson-spring-boot-starter + ${redisson.version} + + + + org.yaml + snakeyaml + ${snakeyaml.version} + + + + org.jsoup + jsoup + ${jsoup.version} + + + + org.freemarker + freemarker + ${freemarker.version} + + + + org.apache.tika + tika-core + ${tika.version} + + + + + + + + + ${project.name}-${profiles.active}-${project.version} + + + false + src/main/resources + + dev/* + test/* + pre/* + prod/* + + + + + src/main/resources/${profiles.active} + true + + *.yaml + + + + + src/main/resources/${profiles.active} + false + + *.* + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + -parameters + 17 + 17 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${springboot.version} + + + + + + + + dev + + dev + + + true + + + + + test + + test + + + + + pre + + pre + + + + + prod + + prod + + + + +