mirror of
https://github.com/shy3130/tick-stock-panel.git
synced 2026-11-02 10:26:13 +00:00
chore(build): 精简 Dockerfile 可选构建阶段, 清理文档与引导页冗余引用
This commit is contained in:
+1
-36
@@ -1,9 +1,6 @@
|
||||
# 两阶段构建:前端 dist 拷进后端镜像,单容器运行
|
||||
# 可选:构建网络无法直连官方源时,传入 --build-arg USE_CN_MIRROR=1 启用国内镜像
|
||||
# 可选: 插件默认不打包(它抓取第三方财经网站接口,存在版权与反爬风险)。
|
||||
# 如确需启用,传入 --build-arg INCLUDE_=1 显式开启,使用风险自负。
|
||||
ARG USE_CN_MIRROR=1
|
||||
ARG INCLUDE_=0
|
||||
ARG NPM_REGISTRY=https://registry.npmmirror.com
|
||||
ARG PYPI_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
# 备用 PyPI 源:主源同步延迟/故障时自动兜底(阿里云与清华互为补充)
|
||||
@@ -28,25 +25,6 @@ RUN pnpm install --frozen-lockfile || pnpm install
|
||||
COPY frontend/ ./
|
||||
RUN pnpm build
|
||||
|
||||
# === Stage 1b: 插件依赖(可选,默认跳过) ===
|
||||
# ⚠️ 合规提示: 通过 node bridge.mjs 抓取第三方财经网站(如东方财富)的行情接口,
|
||||
# 未经对方授权,可能违反其服务条款并涉及交易所行情版权。默认不打包(INCLUDE_=0)。
|
||||
# 如确需启用,构建时传 --build-arg INCLUDE_=1,即视为使用者知悉并自行承担合规责任。
|
||||
# INCLUDE_=0 时,本 stage 仅产出空 node_modules 目录,保证后续 COPY 不报错。
|
||||
FROM node:20-bookworm-slim AS -builder
|
||||
ARG USE_CN_MIRROR=1
|
||||
ARG NPM_REGISTRY=https://registry.npmmirror.com
|
||||
ARG INCLUDE_=0
|
||||
WORKDIR /build
|
||||
RUN if [ "$USE_CN_MIRROR" = "1" ]; then npm config set registry "$NPM_REGISTRY"; fi
|
||||
COPY backend/app/plugins//package.json backend/app/plugins//package-lock.json ./
|
||||
# INCLUDE_=1 时安装依赖;=0 时仅建空目录,使最终镜像不含 依赖
|
||||
RUN if [ "$INCLUDE_" = "1" ]; then \
|
||||
(npm ci || npm install); \
|
||||
else \
|
||||
mkdir -p /build/node_modules; \
|
||||
fi
|
||||
|
||||
# === Stage 1c: Codex CLI ===
|
||||
# 固定版本保证镜像可复现;只复制安装产物到运行镜像,不保留 npm。
|
||||
FROM node:20-bookworm-slim AS codex-builder
|
||||
@@ -68,26 +46,18 @@ ARG USE_CN_MIRROR=1
|
||||
ARG PYPI_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
ARG PYPI_FALLBACK=https://mirrors.aliyun.com/pypi/simple
|
||||
ARG BACKEND_EXTRAS=
|
||||
ARG INCLUDE_=0
|
||||
WORKDIR /app
|
||||
|
||||
# Node.js 运行时: 仅在启用 插件时安装(供 node bridge.mjs 使用)。
|
||||
# Codex CLI 从官方 npm 包提取原生二进制,不依赖运行时 Node.js。
|
||||
# bookworm 自带 nodejs 18.19, 满足插件 engines>=18; --no-install-recommends 精简,
|
||||
# 自带 libnode/libc-ares 等全部动态依赖, 无需手动补库。
|
||||
# 国内构建换 apt 阿里云镜像 (bookworm deb822 格式)。官方 python slim 镜像的
|
||||
# sources 指向 deb.debian.org, 部分国内网络下 apt 极慢(实测阿里云 ECS 拉官方源
|
||||
# 单阶段可达 8 分钟以上); USE_CN_MIRROR 与 npm/pypi 的换源开关注一脉相承。
|
||||
# tesseract-ocr: 自选截图导入(始终安装); nodejs: 仅 INCLUDE_=1 时安装
|
||||
# tesseract-ocr: 自选截图导入(始终安装)
|
||||
RUN if [ "$USE_CN_MIRROR" = "1" ]; then \
|
||||
sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources /etc/apt/sources.list 2>/dev/null || true; \
|
||||
fi \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends tesseract-ocr tesseract-ocr-eng \
|
||||
&& if [ "$INCLUDE_" = "1" ]; then \
|
||||
apt-get install -y --no-install-recommends nodejs \
|
||||
&& node --version; \
|
||||
fi \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& tesseract --version
|
||||
|
||||
@@ -122,11 +92,6 @@ RUN if [ "$USE_CN_MIRROR" = "1" ]; then \
|
||||
# (<root>/backend/app/) 推导的, 容器内会错算到 /。这里用环境变量显式指定
|
||||
# 三个关键路径, 确保 static / tiers / data 都指向容器内正确位置。
|
||||
COPY backend/app ./app
|
||||
# 插件依赖: 从 -builder 拷入。
|
||||
# INCLUDE_=0(默认) 时, -builder 产出空目录,此处拷入空目录,
|
||||
# 即最终镜像不含 依赖,插件默认不可用。
|
||||
# COPY --from 不受 .dockerignore 的 **/node_modules 规则影响。
|
||||
COPY --from=-builder /build/node_modules ./app/plugins//node_modules
|
||||
COPY tiers.yaml /app/tiers.yaml
|
||||
ENV STATIC_DIR=/app/static \
|
||||
TIERS_YAML=/app/tiers.yaml \
|
||||
|
||||
Reference in New Issue
Block a user