mirror of
https://github.com/PlayEdu/PlayEdu
synced 2026-10-25 17:36:35 +08:00
perf(docker): 拆分依赖层以复用构建缓存 (#43)
This commit is contained in:
6 files changed
+77
-23
No files matched your search
+7
-1
@@ -17,4 +17,10 @@
|
||||
/playedu-admin/.env.local/
|
||||
/playedu-admin/.env.development/
|
||||
/playedu-admin/.env.production/
|
||||
/playedu-admin/build/
|
||||
/playedu-admin/build/
|
||||
|
||||
**/target/
|
||||
**/.git/
|
||||
**/.idea/
|
||||
**/.vscode/
|
||||
**/*.log
|
||||
@@ -1,5 +1,7 @@
|
||||
## Unreleased
|
||||
|
||||
- 优化:Dockerfile 拆分依赖层,前端先 `COPY package.json/pnpm-lock.yaml` 再 `pnpm i`,Java 先 `COPY pom.xml` 并 `dependency:go-offline` 预热依赖,源码变更不再触发依赖重装,显著缩短增量构建耗时
|
||||
- 优化:新增 `playedu-api/.mvn/settings.xml` 与 `.mvn/maven.config`,默认走阿里云 Maven 镜像并启用 `-T 1C` 并行构建,加速 `mvnw` 依赖下载与编译
|
||||
- 修复:后台批量导入学员、章节/课时/附件排序接口缺少权限注解导致的越权问题
|
||||
- 优化:后台配置项改为由 `application.yml` 直接读取环境变量,移除 Dockerfile 中的命令行参数映射
|
||||
- 新增:数据库连接池可通过环境变量配置 (`DB_POOL_MIN_IDLE` / `DB_POOL_MAX_SIZE` / `DB_POOL_CONN_TIMEOUT` / `DB_POOL_IDLE_TIMEOUT` / `DB_POOL_MAX_LIFETIME`)
|
||||
|
||||
+36
-19
@@ -1,25 +1,42 @@
|
||||
FROM registry.cn-hangzhou.aliyuncs.com/hzbs/node:20-alpine AS node-builder
|
||||
|
||||
COPY playedu-admin /app/admin
|
||||
COPY playedu-pc /app/pc
|
||||
COPY playedu-h5 /app/h5
|
||||
|
||||
WORKDIR /app/admin
|
||||
RUN pnpm i && VITE_APP_URL=/api/ pnpm build
|
||||
|
||||
WORKDIR /app/pc
|
||||
RUN pnpm i && VITE_APP_URL=/api/ pnpm build
|
||||
|
||||
WORKDIR /app/h5
|
||||
RUN pnpm i && VITE_APP_URL=/api/ pnpm build
|
||||
|
||||
FROM registry.cn-hangzhou.aliyuncs.com/hzbs/eclipse-temurin:17 AS java-builder
|
||||
|
||||
COPY playedu-api /app
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN /app/mvnw -Dmaven.test.skip=true clean package
|
||||
COPY playedu-admin/package.json playedu-admin/pnpm-lock.yaml /app/admin/
|
||||
COPY playedu-pc/package.json playedu-pc/pnpm-lock.yaml /app/pc/
|
||||
COPY playedu-h5/package.json playedu-h5/pnpm-lock.yaml /app/h5/
|
||||
|
||||
RUN cd /app/admin && pnpm i
|
||||
RUN cd /app/pc && pnpm i
|
||||
RUN cd /app/h5 && pnpm i
|
||||
|
||||
COPY playedu-admin /app/admin
|
||||
RUN cd /app/admin && VITE_APP_URL=/api/ pnpm build
|
||||
|
||||
COPY playedu-pc /app/pc
|
||||
RUN cd /app/pc && VITE_APP_URL=/api/ pnpm build
|
||||
|
||||
COPY playedu-h5 /app/h5
|
||||
RUN cd /app/h5 && VITE_APP_URL=/api/ pnpm build
|
||||
|
||||
FROM registry.cn-hangzhou.aliyuncs.com/hzbs/eclipse-temurin:17 AS java-builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY playedu-api/mvnw /app/mvnw
|
||||
COPY playedu-api/.mvn /app/.mvn
|
||||
COPY playedu-api/pom.xml /app/pom.xml
|
||||
COPY playedu-api/playedu-api/pom.xml /app/playedu-api/pom.xml
|
||||
COPY playedu-api/playedu-common/pom.xml /app/playedu-common/pom.xml
|
||||
COPY playedu-api/playedu-course/pom.xml /app/playedu-course/pom.xml
|
||||
COPY playedu-api/playedu-resource/pom.xml /app/playedu-resource/pom.xml
|
||||
COPY playedu-api/playedu-system/pom.xml /app/playedu-system/pom.xml
|
||||
|
||||
RUN /app/mvnw -B -DskipTests dependency:go-offline
|
||||
|
||||
COPY playedu-api /app
|
||||
|
||||
RUN /app/mvnw -B -Dmaven.test.skip=true package
|
||||
|
||||
FROM registry.cn-hangzhou.aliyuncs.com/hzbs/eclipse-temurin:17 AS base
|
||||
|
||||
@@ -36,4 +53,4 @@ EXPOSE 9800
|
||||
EXPOSE 9801
|
||||
EXPOSE 9900
|
||||
|
||||
CMD nginx; echo "Waiting for MySQL to start..."; sleep 15; java -jar /app/api/app.jar
|
||||
CMD nginx; echo "Waiting for MySQL to start..."; sleep 15; java -jar /app/api/app.jar
|
||||
@@ -0,0 +1,4 @@
|
||||
-s
|
||||
.mvn/settings.xml
|
||||
-T
|
||||
1C
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
|
||||
https://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||||
<mirrors>
|
||||
<mirror>
|
||||
<id>aliyun-public</id>
|
||||
<name>Aliyun Public Mirror</name>
|
||||
<url>https://maven.aliyun.com/repository/public</url>
|
||||
<mirrorOf>central</mirrorOf>
|
||||
</mirror>
|
||||
</mirrors>
|
||||
</settings>
|
||||
+14
-3
@@ -1,10 +1,21 @@
|
||||
FROM registry.cn-hangzhou.aliyuncs.com/hzbs/eclipse-temurin:17 AS builder
|
||||
|
||||
COPY . /app
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN /app/mvnw -Dmaven.test.skip=true clean package
|
||||
COPY mvnw /app/mvnw
|
||||
COPY .mvn /app/.mvn
|
||||
COPY pom.xml /app/pom.xml
|
||||
COPY playedu-api/pom.xml /app/playedu-api/pom.xml
|
||||
COPY playedu-common/pom.xml /app/playedu-common/pom.xml
|
||||
COPY playedu-course/pom.xml /app/playedu-course/pom.xml
|
||||
COPY playedu-resource/pom.xml /app/playedu-resource/pom.xml
|
||||
COPY playedu-system/pom.xml /app/playedu-system/pom.xml
|
||||
|
||||
RUN /app/mvnw -B -DskipTests dependency:go-offline
|
||||
|
||||
COPY . /app
|
||||
|
||||
RUN /app/mvnw -B -Dmaven.test.skip=true package
|
||||
|
||||
FROM registry.cn-hangzhou.aliyuncs.com/hzbs/eclipse-temurin:17 AS base
|
||||
|
||||
|
||||
Reference in new issue
Block a user