Files
schoolNews/docker/Dockerfile.web

57 lines
1.6 KiB
Docker
Raw Normal View History

2025-11-24 13:36:03 +08:00
# ====================================
# 前端服务镜像 - School News Web
2025-11-24 14:33:02 +08:00
# 使用Node运行Vite预览服务器
2025-11-24 11:50:15 +08:00
# 注意dist目录需要在主机中先构建好
2025-11-24 13:36:03 +08:00
# ====================================
2025-11-24 14:33:02 +08:00
FROM node:20-alpine
2025-11-24 11:50:15 +08:00
2025-11-24 14:33:02 +08:00
# 设置环境变量
ENV TZ=Asia/Shanghai \
NODE_ENV=production
2025-11-26 14:13:17 +08:00
# 配置国内镜像源并安装基础工具
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 && \
2025-11-24 14:33:02 +08:00
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
# 创建应用目录
WORKDIR /app
# 创建必要目录
RUN mkdir -p /app/dist /app/config /app/logs
# 复制package.json和package-lock.json
COPY schoolNewsWeb/package*.json ./
# 安装生产依赖包括vite用于preview
2025-11-26 14:13:17 +08:00
RUN npm config set registry https://registry.npmmirror.com && \
npm ci --only=production && \
2025-11-24 14:33:02 +08:00
npm install -g vite
2025-11-24 11:50:15 +08:00
# 从主机复制已构建的dist目录
2025-11-24 14:33:02 +08:00
COPY schoolNewsWeb/dist/ /app/dist/
2025-11-24 11:50:15 +08:00
# 复制配置文件模板(可整个替换)
COPY schoolNewsWeb/public/app-config.js /app/config/app-config.js.template
2025-11-24 14:33:02 +08:00
# 确保dist中有默认配置文件
RUN if [ ! -f /app/dist/app-config.js ]; then \
cp /app/config/app-config.js.template /app/dist/app-config.js; \
2025-11-24 11:50:15 +08:00
fi
# 复制启动脚本
COPY schoolNewsWeb/docker/start.sh /app/start.sh
RUN chmod +x /app/start.sh
2025-11-24 14:33:02 +08:00
# 暴露端口Vite preview默认4173
EXPOSE 4173
2025-11-24 11:50:15 +08:00
# 健康检查
2025-11-24 14:33:02 +08:00
HEALTHCHECK --interval=30s --timeout=10s --start-period=20s --retries=3 \
CMD curl -f http://localhost:4173/ || exit 1
2025-11-24 11:50:15 +08:00
# 启动应用
CMD ["/app/start.sh"]