mirror of
https://github.com/shy3130/tick-stock-panel.git
synced 2026-11-02 10:26:13 +00:00
修复:Docker 模式支持 Codex CLI
This commit is contained in:
+20
@@ -9,6 +9,7 @@ ARG PYPI_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
# 备用 PyPI 源:主源同步延迟/故障时自动兜底(阿里云与清华互为补充)
|
||||
ARG PYPI_FALLBACK=https://mirrors.aliyun.com/pypi/simple
|
||||
ARG BACKEND_EXTRAS=
|
||||
ARG CODEX_CLI_VERSION=0.144.3
|
||||
|
||||
# === Stage 1: 前端构建 ===
|
||||
FROM node:20-alpine AS frontend-builder
|
||||
@@ -46,6 +47,20 @@ RUN if [ "$INCLUDE_" = "1" ]; then \
|
||||
mkdir -p /build/node_modules; \
|
||||
fi
|
||||
|
||||
# === Stage 1c: Codex CLI ===
|
||||
# 固定版本保证镜像可复现;只复制安装产物到运行镜像,不保留 npm。
|
||||
FROM node:20-bookworm-slim AS codex-builder
|
||||
ARG USE_CN_MIRROR=1
|
||||
ARG NPM_REGISTRY=https://registry.npmmirror.com
|
||||
ARG CODEX_CLI_VERSION=0.144.3
|
||||
RUN if [ "$USE_CN_MIRROR" = "1" ]; then npm config set registry "$NPM_REGISTRY"; fi \
|
||||
&& npm install --global --prefix /opt/codex "@openai/codex@${CODEX_CLI_VERSION}" \
|
||||
&& CODEX_NATIVE="$(find /opt/codex -type f -path '*/vendor/*/bin/codex' -print -quit)" \
|
||||
&& test -n "$CODEX_NATIVE" \
|
||||
&& cp "$CODEX_NATIVE" /opt/codex-native \
|
||||
&& chmod +x /opt/codex-native \
|
||||
&& /opt/codex-native --version
|
||||
|
||||
# === Stage 2: Python 运行时 ===
|
||||
FROM python:3.11-slim AS runtime
|
||||
ARG USE_CN_MIRROR=1
|
||||
@@ -56,6 +71,7 @@ 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 mirror 已在 debian 镜像sources.list 配好, 无需额外换源。
|
||||
@@ -110,6 +126,10 @@ ENV STATIC_DIR=/app/static \
|
||||
# Frontend 静态产物
|
||||
COPY --from=frontend-builder /build/dist ./static
|
||||
|
||||
# Codex CLI 使用官方 npm 包携带的当前平台原生二进制,无需运行时 Node.js。
|
||||
COPY --from=codex-builder /opt/codex-native /usr/local/bin/codex
|
||||
RUN codex --version
|
||||
|
||||
ENV PYTHONPATH=/app
|
||||
# 兜底时区: 交易时段判断已在代码里显式用北京时间 (app/market_time.py),
|
||||
# 此处让日志时间戳等其余 naive 时间也对齐北京时间。
|
||||
|
||||
@@ -7,6 +7,7 @@ services:
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
BACKEND_EXTRAS: ${BACKEND_EXTRAS:-}
|
||||
CODEX_CLI_VERSION: ${CODEX_CLI_VERSION:-0.144.3}
|
||||
container_name: TickFlow_Stock_Panel
|
||||
ports:
|
||||
- "${PORT:-3018}:3018"
|
||||
@@ -21,4 +22,6 @@ services:
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
- ./tiers.yaml:/app/tiers.yaml:ro
|
||||
# 复用主机 Codex 登录态;后端只读后复制到单次请求的临时 CODEX_HOME。
|
||||
- ${HOME}/.codex:/root/.codex:ro
|
||||
restart: unless-stopped
|
||||
|
||||
Reference in New Issue
Block a user