fix(镜像): apt 换清华源、去掉用不上的 ca-certificates;补部署脚本
## apt-get update 在服务器上卡死 不是慢,是挂住不返回 —— 本机构建从来没事,所以演练没暴露。换清华源。两个细节: - trixie 的源是 deb822 格式,在 `/etc/apt/sources.list.d/debian.sources`, 老的 `sources.list` 在这个基底里是**空文件**,改它没有任何效果。 - **只能换主机名、必须保持 http。** https 源会在这一步失败,因为镜像里还没有根证书。 `ARG APT_MIRROR` 可覆盖。 ## ca-certificates 是多余的 原注释写「给 AI 接口的 https 出站用」,不成立:Bun 和 Node 一样内嵌了一份根证书, 走自己那份,不读系统的 /etc/ssl/certs。 实测:把探针二进制丢进裸 debian:trixie-slim(没有 ca-certificates)请求 api.deepseek.com,握手正常、返回 401(没带 key),和装了的镜像行为一致。 去掉之后重新构建,clang-format / ruff 都在,https 出站照旧,487MB → 483MB。 哪天镜像里加了用 OpenSSL 做 TLS 的东西(curl、wget 之类),这条要重新考虑, 注释里写了。 ## docker/deploy.sh 没有 git remote 时的部署路径:本机 rsync 推代码 → 服务器上构建 → 起栈 → 冒烟。 默认不推 docker/.env(两边不是一回事,覆盖掉是静默故障),要同步显式 --env。 起栈前两道守卫,就是今天在服务器上真撞到的那两种失败:DATA_DIR 没生效(卷指向 OJ2/data)、DB_HOST 没生效(DATABASE_URL 还指着试跑形态下并不存在的 oj-postgres)。 两道守卫都用当天那份坏 env 正反跑过:齐全时放行,抹掉这两个变量时都触发。 两半的语法也都 `bash -n` 过(远端那半是 heredoc,单独渲染后再查的)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -53,9 +53,27 @@ FROM debian:trixie-slim AS api
|
||||
ENV NODE_ENV=production
|
||||
|
||||
# clang-format 给 C 代码格式化用,对应旧镜像 apt 装的那个。
|
||||
# ca-certificates 给 AI 接口的 https 出站用。
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends ca-certificates clang-format \
|
||||
#
|
||||
# **不装 ca-certificates。** AI 接口那条 https 出站不需要它 —— Bun 和 Node 一样
|
||||
# 内嵌了一份根证书,走自己那份,不读系统的 `/etc/ssl/certs`。实测:把探针二进制
|
||||
# 丢进裸 debian:trixie-slim(没有 ca-certificates)请求 api.deepseek.com,
|
||||
# 握手正常、返回 401(没带 key),和装了的镜像行为一致。
|
||||
# 哪天镜像里加了用 OpenSSL 做 TLS 的东西(curl、wget 之类),这条要重新考虑。
|
||||
#
|
||||
# apt 走国内镜像源,理由和上面的 npm 源一样:deb.debian.org 从服务器上
|
||||
# `apt-get update` 会卡死(不是慢,是挂住不返回)。
|
||||
#
|
||||
# 两个坑:
|
||||
# 1. trixie 的源是 deb822 格式,在 `/etc/apt/sources.list.d/debian.sources`,
|
||||
# 不是老的 `/etc/apt/sources.list`(那个文件在这个基底里是空的)。
|
||||
# 2. **必须保持 http,不能换成 https** —— 镜像里没有根证书(见上),
|
||||
# https 源会直接证书校验失败。
|
||||
#
|
||||
# 只替换主机名:清华同时提供 /debian 和 /debian-security,路径不用动。
|
||||
ARG APT_MIRROR=mirrors.tuna.tsinghua.edu.cn
|
||||
RUN sed -i "s|deb.debian.org|${APT_MIRROR}|g" /etc/apt/sources.list.d/debian.sources \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends clang-format \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# ruff 给 Python 代码格式化用。旧后端是 pip 装的 ruff==0.15.12,这里取同版本的
|
||||
|
||||
Reference in New Issue
Block a user