技术 静态站 Docker 部署备忘
Astro / 静态站构建后用 Nginx 镜像 + Compose 托管,再反代到自己的域名。
个人博客这类 静态站,最省心的路径往往是:本地(或 CI)build 出 dist,再用 Docker + Nginx 挂出去,前面接反代与 HTTPS。
为什么用 Docker
- 环境和线上一致,少一句「我这边能跑」
- 升级、回滚就是换镜像 / 换挂载目录
- 和现有服务器上的其它容器(反代、监控)好放一起
本站也提供了可选的 docker compose 示例:构建产物进 Nginx,映射 8080→80。
推荐流程
- 构建
npm run build,确认dist里是纯静态文件。 - 镜像
多阶段构建:Node 阶段 build,Nginx 阶段只拷贝dist。 - Compose
固定重启策略、端口、只读挂载(若用卷同步产物)。 - 反代
宿主机 Nginx / Caddy 把blog.example.cn指到容器端口,并上证书。 - 发布
git push→ CI 构建 →rsync/ SSH 拉新产物或重新compose up -d --build。
Nginx 静态站要点
try_files配好 SPA / 多页路由(Astro 多页通常按目录index.html)- 开 gzip / brotli,静态资源长缓存,
index.html短缓存或不缓存 - 安全头按需加:
X-Content-Type-Options、Referrer-Policy等
常见坑
| 现象 | 排查 |
|---|---|
| 构建阶段拉不到 npm | 构建机网络 / registry 镜像 |
| 页面 404 | try_files 与 Astro output 格式是否匹配 |
| 样式丢失 | base 路径、CDN 或反代路径前缀 |
| 证书失败 | 反代是否指到正确 upstream、80/443 是否放行 |
小结
静态站不必上重型应用运行时。 构建一次、Nginx 托管、Compose 固定、反代收口,对个人博客和小型官网足够稳。有域名和一台小主机,就可以按这个模板套。