1
0
Просмотр исходного кода

refactor: 改进mvn构建时间过长的问题,使用docker阶段性缓存,避免重复远端下载

fanyanpeng 2 лет назад
Родитель
Сommit
4c65fffa9a
1 измененных файлов с 33 добавлено и 6 удалено
  1. 33 6
      Dockerfile

+ 33 - 6
Dockerfile

@@ -1,13 +1,40 @@
+# todo: dockerfile 考虑自动生成
+
 FROM maven:3.6.1 AS compile_stage
+
 ENV PROJECT_NAME app
+# 项目所在的工作目录
 ENV WORK_PATH /opt/$PROJECT_NAME
-COPY settings.xml /root/.m2/settings.xml
-COPY . $WORK_PATH
-RUN cd $WORK_PATH && mvn clean install -DskipTests -DfinalName=$PROJECT_NAME
 
-FROM openjdk:8-jre-alpine
+# 项目所在的git分支
+ENV GIT_BRANCH internal-paas
+
+ENV GIT_URL http://gogs.seec.seecoder.cn/FanYanPeng/SEEC-Gitlab.git
+
+# 跳转到工作目录
+WORKDIR $WORK_PATH
+
+RUN git clone --branch $GIT_BRANCH $GIT_URL .
+
+RUN cp settings.xml /root/.m2/settings.xml
+
+# 多线程下载依赖,只要pom文件不改变,依赖不会重复下载
+RUN mvn clean install -DskipTests -DfinalName=$PROJECT_NAME
+
+COPY . .
+
+# ---
+# 默认情况下,前面的步骤都会被缓存下来
+
+# 多线程下载依赖,只要pom文件不改变,依赖不会重复下载
+RUN mvn clean install -DskipTests -DfinalName=$PROJECT_NAME
+
+FROM openjdk:8-alpine
+
 ENV PROJECT_NAME app
 ENV WORK_PATH /opt/$PROJECT_NAME
+ENV MODELE_NAME seecoder-gitlab-server
+
 WORKDIR /app
-COPY --from=compile_stage $WORK_PATH/seecoder-gitlab-server/target/${PROJECT_NAME}.jar .
-CMD ["sh", "-c", "java -Xdebug -Xrunjdwp:transport=dt_socket,address=8888,server=y,suspend=n -jar -server /app/${PROJECT_NAME}.jar"]
+COPY --from=compile_stage $WORK_PATH/$MODELE_NAME/target/$PROJECT_NAME.jar .
+CMD ["sh", "-c", "java -Xdebug -Xrunjdwp:transport=dt_socket,address=8888,server=y,suspend=n -jar -server /app/$PROJECT_NAME.jar"]