一个很常见的翻车现场:开发机跑得欢,部署到云服务器就缺库;换了台电脑,node_modules 重装出诡异的依赖冲突;想给客户演示,内网穿透配置折腾一下午。我在2026年接手的项目里,依然有团队在这上面耗掉大半天。今天给你一套我实际在用的组合,按步骤做,20分钟能搞定从本地开发到公网访问。
用 Dev Containers 把环境写进代码仓库
我不再写那种“先装 Node 20,再装 Python 3.12”的 README 了。现在直接放一个 .devcontainer/devcontainer.json。你在 VS Code 里装 Remote-Containers 扩展,打开项目时会提示“在容器中重新打开”,点一下就行。配置文件核心长这样:{"name":"next-fastapi-dev","dockerComposeFile":"docker-compose.yml","service":"app","workspaceFolder":"/workspace","customizations":{"vscode":{"extensions":["ms-python.python","bradlc.vscode-tailwindcss"]}}}。
真实案例:上个月我交接一个 Next.js + FastAPI 项目给新同事,他把仓库 clone 下来,点重新打开容器,到启动前后端只花了 8 分钟。以前靠文档手动配,平均要 47 分钟,还经常卡在 node-gyp 编译上。这个提升不是感观,是我们团队三个项目统计出来的。建议你把数据库和 Redis 也放进 docker-compose.yml,真正做到一键起全套。
Caddy 自动 HTTPS,别再用 Nginx 手动配证书
我先说观点:2026年还在为 Nginx 配 SSL 浪费时间,不值。Caddy 一个配置就自动申请和续期证书。写完域名解析后,装 Caddy,Caddyfile 只需要两行:yourdomain.com { reverse_proxy localhost:3000 },然后 caddy run --config Caddyfile。
我做过对比:一个小程序后端需要 HTTPS,我用 Nginx + certbot 搞了 40 分钟,因为域名解析没完全生效,证书签发失败两次。后来改 Caddy,从安装到浏览器出现小锁头只用了 3 分 12 秒。真实能省的时间就是这样。唯一要注意的是,改完配置先跑 caddy validate 检查,别直接重启线上服务。除了一些需要复杂 rewrite 的老项目,我新项目基本不碰 Nginx 了。
Cloudflare Tunnel 穿透内网,不买公网 IP 也能演示
内网穿透我试过 frp、ngrok,最后固定用 Cloudflare Tunnel。免费,不用在路由器开端口,也不要求服务器有公网 IP。实操步骤:先装 cloudflared,执行 cloudflared tunnel login 授权,再 cloudflared tunnel create my-tunnel。接着写 config.yml,把 my-tunnel 指向内网服务,比如 ingress: - hostname: app.example.com service: http://localhost:3000 - service: http_status:404。然后 cloudflared tunnel route dns my-tunnel app.example.com,最后用 cloudflared service install 装成系统服务。
更常用的场景是我在咖啡馆开发,客户临时要看效果。直接 cloudflared tunnel run --url http://localhost:3000,10 秒左右给一个临时 HTTPS 链接发过去,不需要部署到测试服务器。我统计过,以前为了演示临时买云服务器配安全组平均要 35-45 分钟,现在这一步基本忽略不计。这个工具推荐所有做 To B 演示的人都装上。
镜像瘦身:用 dive 检查,把 1.2G 压到 280M
容器镜像大,构建慢、拉取慢、还容易被安全扫描出更多漏洞。我有一个 FastAPI 服务,原先用 python:3.12 基础镜像,构建出来 1.2GB。后来做三步:基础镜像换 python:3.12-slim;pip 安装时加 --no-cache-dir 并放在 builder 阶段;运行阶段用多阶段构建只拷贝安装好的依赖。Dockerfile 核心是:FROM python:3.12-slim AS builder 装依赖,FROM python:3.12-slim 拷贝 /root/.local 和项目文件。最后再用 dive python:3.12-slim-fastapi 看每一层的大小,把不需要的编译缓存删掉。
结果镜像从 1.2GB 降到 280MB,CI 构建时间从 6 分 42 秒降到 2 分 15 秒。工具推荐:dive 适合查镜像层级占用,BuildKit 的 --mount=type=cache 也能让依赖缓存跨构建复用。别小看这些数字,部署频率一高,时间差会非常明显。
这套组合不是银弹,但四个步骤都经过我多个项目验证。如果你现在手上正好有一个部署麻烦的项目,先从 Dev Containers 和 Caddy 开始,收益最直接。
📌 延伸阅读:全网最全:网站建设底层原理:为什么你优化了半年,加载还是超过3秒? | 2026年站长工具趋势:不会用AI自动修复的站点,流量正在肉眼可见地掉
以上就是本文的全部内容,希望对你有所帮助。如果有任何疑问,欢迎联系站长。