源修改

This commit is contained in:
2025-11-26 14:13:17 +08:00
parent 20388fc818
commit 095f832fe6
3 changed files with 100 additions and 67 deletions

156
build.sh
View File

@@ -335,14 +335,18 @@ save_image() {
} }
# ================================================ # ================================================
# 主流程控制 # 主流程控制(函数化)
# ================================================ # ================================================
# Git更新可选 git_update_if_needed() {
if [ "${DO_BUILD}" = true ]; then # Git更新可选
if [ "${DO_BUILD}" != true ]; then
return
fi
log_step "Git Pull" log_step "Git Pull"
cd "${PROJECT_ROOT}" cd "${PROJECT_ROOT}"
if [[ $(git status --porcelain) ]]; then if [[ $(git status --porcelain) ]]; then
log_warn "检测到未提交的更改" log_warn "检测到未提交的更改"
read -p "是否继续拉取代码?(y/n): " -n 1 -r read -p "是否继续拉取代码?(y/n): " -n 1 -r
@@ -356,73 +360,97 @@ if [ "${DO_BUILD}" = true ]; then
git pull origin main 2>/dev/null || git pull origin master 2>/dev/null || true git pull origin main 2>/dev/null || git pull origin master 2>/dev/null || true
fi fi
echo "" echo ""
fi }
run_compile() {
# 执行编译
if [ "${DO_BUILD}" != true ]; then
return
fi
# 执行编译
if [ "${DO_BUILD}" = true ]; then
case ${BUILD_TARGET} in case ${BUILD_TARGET} in
serv|all) serv)
compile_serv
;;
web)
compile_web
;;
all)
compile_serv compile_serv
;& # fallthrough
web|all)
compile_web compile_web
;; ;;
esac esac
fi }
# 执行镜像构建 run_build_images() {
case ${BUILD_TARGET} in # 执行镜像构建
base-serv) case ${BUILD_TARGET} in
build_base_serv base-serv)
;; build_base_serv
mysql) ;;
build_mysql mysql)
;; build_mysql
serv) ;;
build_serv serv)
;; build_serv
web) ;;
build_web web)
;; build_web
all) ;;
build_mysql all)
build_serv build_mysql
build_web build_serv
;; build_web
*) ;;
log_error "未知的构建目标: ${BUILD_TARGET}" *)
echo "" log_error "未知的构建目标: ${BUILD_TARGET}"
echo "可用的构建目标:" echo ""
echo " base-serv - 构建后端基础镜像包含Python依赖" echo "可用的构建目标:"
echo " mysql - 构建MySQL镜像" echo " base-serv - 构建后端基础镜像包含Python依赖"
echo " serv - 构建后端服务镜像" echo " mysql - 构建MySQL镜像"
echo " web - 构建端服务镜像基于node:20-alpine" echo " serv - 构建端服务镜像"
echo " all - 构建所有应用镜像(默认" echo " web - 构建前端服务镜像基于node:20-alpine"
echo "" echo " all - 构建所有应用镜像(默认)"
echo "注意:" echo ""
echo " - Nginx使用官方镜像 nginx:alpine无需构建" echo "注意:"
echo " - Web基于官方Node镜像 node:20-alpine无需base-web" echo " - Nginx使用官方镜像 nginx:alpine无需构建"
exit 1 echo " - Web基于官方Node镜像 node:20-alpine无需base-web"
;; exit 1
esac ;;
esac
}
# 查看镜像信息 show_images_info() {
log_info "Docker镜像列表:" # 查看镜像信息
docker images | grep -E "school-news-" | head -15 log_info "Docker镜像列表:"
echo "" docker images | grep -E "school-news-" | head -15
echo ""
}
# 保存镜像 print_summary() {
if [ "${DO_SAVE}" = true ]; then # 构建完成
save_images echo "=========================================="
fi log_info "✅ 构建完成!"
echo "=========================================="
log_info "构建目标: ${BUILD_TARGET}"
log_info "构建版本: ${IMAGE_VERSION}"
log_info "输出目录: ${BUILD_OUTPUT}"
echo "=========================================="
}
main() {
git_update_if_needed
run_compile
run_build_images
show_images_info
# 保存镜像(可选)
if [ "${DO_SAVE}" = true ]; then
save_images
fi
print_summary
}
main
# ================================================
# 构建完成
# ================================================
echo "=========================================="
log_info "✅ 构建完成!"
echo "=========================================="
log_info "构建目标: ${BUILD_TARGET}"
log_info "构建版本: ${IMAGE_VERSION}"
log_info "输出目录: ${BUILD_OUTPUT}"
echo "=========================================="

View File

@@ -33,6 +33,8 @@ COPY schoolNewsCrawler/requirements.txt /tmp/requirements.txt
RUN echo "========================================" && \ RUN echo "========================================" && \
echo "安装Python爬虫依赖到基础镜像" && \ echo "安装Python爬虫依赖到基础镜像" && \
echo "========================================" && \ echo "========================================" && \
# 配置pip使用国内镜像源清华源
python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
python3 -m pip --version && \ python3 -m pip --version && \
echo "" && \ echo "" && \
# Python 3.12 引入了 PEP 668 规范,需要添加 --break-system-packages # Python 3.12 引入了 PEP 668 规范,需要添加 --break-system-packages

View File

@@ -9,8 +9,10 @@ FROM node:20-alpine
ENV TZ=Asia/Shanghai \ ENV TZ=Asia/Shanghai \
NODE_ENV=production NODE_ENV=production
# 安装基础工具 # 配置国内镜像源并安装基础工具
RUN apk add --no-cache tzdata bash curl && \ 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 && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone echo "Asia/Shanghai" > /etc/timezone
@@ -24,7 +26,8 @@ RUN mkdir -p /app/dist /app/config /app/logs
COPY schoolNewsWeb/package*.json ./ COPY schoolNewsWeb/package*.json ./
# 安装生产依赖包括vite用于preview # 安装生产依赖包括vite用于preview
RUN npm ci --only=production && \ RUN npm config set registry https://registry.npmmirror.com && \
npm ci --only=production && \
npm install -g vite npm install -g vite
# 从主机复制已构建的dist目录 # 从主机复制已构建的dist目录