快速定位

别一上来就换源,看慢在哪:docker pullnpm cipnpm installpip install,还是 CI 的 cache miss。每次只改一层,否则你不知道是哪一步救了项目。

典型症状处理方向
Docker基础镜像拉不动固定 digest,预构建镜像
npm/pnpminstall 半天无输出registry、store cache、lockfile
PyPI/pipwheel 下载超时pip cache、timeout、二进制包
CI本地快 CI 慢actions/cache、buildx cache

本地开发环境怎么固定?

第一,版本写进文件。Node 用 .nvmrc 或 Volta,Python 用 .python-version 或 uv,Docker 镜像写 tag 还不够,关键基础镜像可以固定 digest。

第二,lockfile 必须进仓库。package-lock.jsonpnpm-lock.yamlpoetry.lock 不要忽略。独立开发者有时觉得麻烦,但没有 lockfile,你每次安装都在抽奖。

第三,registry 配置要可见。不要只在自己电脑全局改 npm config。项目里放 .npmrc,Python 写 pip config 示例,Docker 在 README 或已有开发文档里写清基础镜像策略。

registry、缓存和 fallback 怎么配?

工具主配置fallback
npm项目 .npmrc官方 registry
pnpmstore cache清 store 后重装
pippip.conf 或命令参数--index-url 切回 PyPI
DockerGHCR 预构建Docker Hub 官方镜像

镜像源能省时间,但不要把它当永久基础设施。我的习惯是:默认用较快源,出错时一条命令切回官方源;私有包永远先保证鉴权正确,再谈速度。

CI 里怎么处理?

GitHub Actions 里缓存要按 lockfile 做 key。Node 项目缓存 npm 或 pnpm store,Python 项目缓存 pip,Docker 用 buildx cache。不要缓存整个工作目录,那会把旧产物和权限问题带进来。

Dockerfile 也要按缓存友好写,复制 lockfile 安装依赖,再复制业务代码。否则你改一行页面文案,Docker 也会重装所有依赖。

团队 runbook 写什么?

写短一点,能执行就行:

  • 新电脑安装顺序:Node、Python、Docker、包管理器
  • 常用安装命令:pnpm installpip install -r requirements.txt
  • 慢的时候先查哪三条命令
  • 切 registry 和切回官方源的命令
  • 清缓存命令和风险提示
  • CI 失败时谁来处理

小团队最怕「只有某个人电脑能跑」。runbook 的目标不是漂亮,是让下一个人 30 分钟内能把环境拉起来。

跨地区协作怎么兜底?

如果你经常在不同城市、共享办公或云桌面里开发,Docker、npm、PyPI 的下载体验会波动。基础设施项目可以准备独立开发者出海稳定专线,同时保留 registry fallback 和 CI cache。线路只能减少抖动,不能替代版本锁定。

相关阅读