From 1798fc3df1c845f6c226f401c840964420aa5100 Mon Sep 17 00:00:00 2001 From: hex2077 Date: Tue, 3 Mar 2026 00:35:15 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E5=B9=B6=E4=BC=98=E5=8C=96Docker=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将版本号从2.10.3.2更新至2.10.3.3 - 调整Dockerfile中复制tls-sidecar二进制文件的位置,避免被本地文件覆盖 - 在tls-sidecar启动时增加Linux/macOS平台下的执行权限设置 - 增强二进制文件存在性检查,确保目标为常规文件 --- Dockerfile | 11 ++++++----- VERSION | 2 +- src/utils/tls-sidecar.js | 11 ++++++++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index a1c678f..95023b9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,10 +22,6 @@ LABEL description="Docker image for AIClient2API server" # 安装必要的系统工具(tar 用于更新功能,git 用于版本检查) RUN apk add --no-cache tar git -# 从 sidecar 构建阶段复制二进制 -COPY --from=sidecar-builder /build/tls-sidecar /app/tls-sidecar/tls-sidecar -RUN chmod +x /app/tls-sidecar/tls-sidecar - # 设置工作目录 WORKDIR /app @@ -40,6 +36,11 @@ RUN npm install # 复制源代码 COPY . . +# 从 sidecar 构建阶段复制二进制 +# 放在 COPY . . 之后是为了确保不会被本地的空目录或旧二进制文件覆盖 +COPY --from=sidecar-builder /build/tls-sidecar /app/tls-sidecar/tls-sidecar +RUN chmod +x /app/tls-sidecar/tls-sidecar + USER root # 创建目录用于存储日志和系统提示文件 @@ -55,4 +56,4 @@ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ # 设置启动命令 # 使用默认配置启动服务器,支持通过环境变量配置 # 通过环境变量传递参数,例如:docker run -e ARGS="--api-key mykey --port 8080" ... -CMD ["sh", "-c", "node src/core/master.js $ARGS"] \ No newline at end of file +CMD ["sh", "-c", "node src/core/master.js $ARGS"] diff --git a/VERSION b/VERSION index 3f7f1ca..efa8f5a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.10.3.2 +2.10.3.3 diff --git a/src/utils/tls-sidecar.js b/src/utils/tls-sidecar.js index 53f064f..9a6f879 100644 --- a/src/utils/tls-sidecar.js +++ b/src/utils/tls-sidecar.js @@ -60,6 +60,15 @@ class TLSSidecar { logger.info(`[TLS-Sidecar] Starting: ${binaryPath} on port ${this.port}`); try { + // 确保 Linux/macOS 下有执行权限 + if (process.platform !== 'win32') { + try { + fs.chmodSync(binaryPath, 0o755); + } catch (e) { + logger.warn(`[TLS-Sidecar] Failed to chmod binary: ${e.message}`); + } + } + this.process = spawn(binaryPath, [], { env: { ...process.env, @@ -211,7 +220,7 @@ class TLSSidecar { for (const p of candidates) { try { - if (fs.existsSync(p)) { + if (fs.existsSync(p) && fs.statSync(p).isFile()) { return p; } } catch { /* ignore */ }