From fe54842839a3f0e39bc4220a0cae39b898cdda34 Mon Sep 17 00:00:00 2001 From: wangys <3401275564@qq.com> Date: Tue, 16 Dec 2025 17:41:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9E=84=E5=BB=BA=E6=B5=81=E7=A8=8B=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/schoolNews/Dockerfile.serv | 28 ++++++++++++++--------- docker/schoolNews/Dockerfile.web | 38 ++++++++++++++----------------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/docker/schoolNews/Dockerfile.serv b/docker/schoolNews/Dockerfile.serv index 486f95e..8c9a3ac 100644 --- a/docker/schoolNews/Dockerfile.serv +++ b/docker/schoolNews/Dockerfile.serv @@ -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"] diff --git a/docker/schoolNews/Dockerfile.web b/docker/schoolNews/Dockerfile.web index 54a8b3e..9364855 100644 --- a/docker/schoolNews/Dockerfile.web +++ b/docker/schoolNews/Dockerfile.web @@ -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