Merge branch 'master' of ssh://49.234.3.145:222/wangys/schoolNews

This commit is contained in:
2025-12-16 18:27:25 +08:00
2 changed files with 34 additions and 32 deletions

View File

@@ -1,23 +1,29 @@
# ==================================== # ====================================
# 后端服务镜像 - School News Serv # 后端服务镜像 - School News Serv
# 基于school-news-base-serv已包含Python依赖 # 直接从主机复制构建好的JAR包
# 注意:jar包需要在主机中先编译好 # 注意:使用前需要先执行build.sh构建JAR包
# ==================================== # ====================================
FROM school-news-base-serv:latest 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 schoolNewsCrawler/ /app/crawler/
# 复制默认配置文件
# 复制默认配置文件(作为备份)
COPY schoolNewsServ/admin/src/main/resources/application.yml /app/config/application.yml.template 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/admin/src/main/resources/log4j2-spring.xml /app/config/log4j2-spring.xml.template
# 复制启动脚本 # 2. 设置脚本权限和创建目录
COPY schoolNewsServ/docker/start.sh /app/start.sh RUN chmod +x /app/start.sh && \
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 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 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 \ 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 && \ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && \
apk update && \ apk update && \
apk add --no-cache tzdata bash curl && \ apk add --no-cache tzdata bash curl && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ 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 WORKDIR /app
# 创建必要目录 # 2. 安装依赖这层在package*.json不变时会使用缓存
RUN mkdir -p /app/dist /app/config /app/logs
# 复制package.json和package-lock.json
COPY schoolNewsWeb/package*.json ./ COPY schoolNewsWeb/package*.json ./
RUN npm ci --only=production && \
# 安装生产依赖包括vite用于preview
RUN npm config set registry https://registry.npmmirror.com && \
npm ci --only=production && \
npm install -g vite 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/dist/ /app/dist/
# 复制配置文件模板(可整个替换) # 5. 确保dist中有默认配置文件
COPY schoolNewsWeb/public/app-config.js /app/config/app-config.js.template
# 确保dist中有默认配置文件
RUN if [ ! -f /app/dist/app-config.js ]; then \ RUN if [ ! -f /app/dist/app-config.js ]; then \
cp /app/config/app-config.js.template /app/dist/app-config.js; \ cp /app/config/app-config.js.template /app/dist/app-config.js; \
fi fi
# 复制启动脚本
COPY schoolNewsWeb/docker/start.sh /app/start.sh
RUN chmod +x /app/start.sh
# 暴露端口Vite preview默认4173 # 暴露端口Vite preview默认4173
EXPOSE 4173 EXPOSE 4173