构建流程优化

This commit is contained in:
2025-12-16 17:41:30 +08:00
parent 62e6365d46
commit fe54842839
2 changed files with 34 additions and 32 deletions

View File

@@ -1,23 +1,29 @@
# ====================================
# 后端服务镜像 - School News Serv
# 基于school-news-base-serv已包含Python依赖
# 注意:jar包需要在主机中先编译好
# 直接从主机复制构建好的JAR包
# 注意:使用前需要先执行build.sh构建JAR包
# ====================================
FROM school-news-base-serv:latest
# 从主机复制已编译的jar包
COPY schoolNewsServ/admin/target/admin-1.0.0.jar /app/app.jar
# 设置工作目录
WORKDIR /app
# 复制爬虫脚本(基础镜像已安装依赖,这里只需复制脚本)
# 1. 复制不经常变化的文件
# 复制启动脚本
COPY schoolNewsServ/docker/start.sh /app/start.sh
# 复制爬虫脚本(基础镜像已安装依赖)
COPY schoolNewsCrawler/ /app/crawler/
# 复制默认配置文件(作为备份)
# 复制默认配置文件
COPY schoolNewsServ/admin/src/main/resources/application.yml /app/config/application.yml.template
COPY schoolNewsServ/admin/src/main/resources/log4j2-spring.xml /app/config/log4j2-spring.xml.template
# 复制启动脚本
COPY schoolNewsServ/docker/start.sh /app/start.sh
RUN chmod +x /app/start.sh
# 2. 设置脚本权限和创建目录
RUN chmod +x /app/start.sh && \
mkdir -p /app/logs
# 3. 最后复制JAR包这行变化最频繁放在最后
# 注意这里假设JAR包已经通过build.sh构建在target目录下
COPY schoolNewsServ/admin/target/admin-*.jar /app/app.jar
# 暴露端口
EXPOSE 8081
@@ -27,4 +33,4 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD curl -f http://localhost:8081/schoolNewsServ/actuator/health || exit 1
# 启动应用
CMD ["/app/start.sh"]
ENTRYPOINT ["/app/start.sh"]

View File

@@ -7,44 +7,40 @@ FROM node:20-alpine
# 设置环境变量
ENV TZ=Asia/Shanghai \
NODE_ENV=production
NODE_ENV=production \
NPM_CONFIG_REGISTRY=https://registry.npmmirror.com
# 配置国内镜像源并安装基础工具
# 1. 基础系统配置(这层很少变化)
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && \
apk update && \
apk add --no-cache tzdata bash curl && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
echo "Asia/Shanghai" > /etc/timezone && \
# 创建必要目录
mkdir -p /app/dist /app/config /app/logs
# 创建应用目录
# 设置工作目录
WORKDIR /app
# 创建必要目录
RUN mkdir -p /app/dist /app/config /app/logs
# 复制package.json和package-lock.json
# 2. 安装依赖这层在package*.json不变时会使用缓存
COPY schoolNewsWeb/package*.json ./
# 安装生产依赖包括vite用于preview
RUN npm config set registry https://registry.npmmirror.com && \
npm ci --only=production && \
RUN npm ci --only=production && \
npm install -g vite
# 从主机复制已构建的dist目录
# 3. 复制静态配置和启动脚本(这些文件不常变化)
COPY schoolNewsWeb/public/app-config.js /app/config/app-config.js.template
COPY schoolNewsWeb/docker/start.sh /app/start.sh
RUN chmod +x /app/start.sh
# 4. 复制构建产物(这行变化最频繁,放在最后)
# 注意确保在主机上已经执行过构建npm run build
COPY schoolNewsWeb/dist/ /app/dist/
# 复制配置文件模板(可整个替换)
COPY schoolNewsWeb/public/app-config.js /app/config/app-config.js.template
# 确保dist中有默认配置文件
# 5. 确保dist中有默认配置文件
RUN if [ ! -f /app/dist/app-config.js ]; then \
cp /app/config/app-config.js.template /app/dist/app-config.js; \
fi
# 复制启动脚本
COPY schoolNewsWeb/docker/start.sh /app/start.sh
RUN chmod +x /app/start.sh
# 暴露端口Vite preview默认4173
EXPOSE 4173