Docker 多阶段构建,分享我的瘦身模板
团队里很多 Node 项目的镜像动辄 1GB+,整理了一份多阶段构建模板,能压到 200MB 内。 关键点:用 alpine、生产阶段不带 devDeps、利用 standalone 输出。 大家的镜像都多大?
Posts
Start discussions like a forum — great for questions, opinions, tool recommendations, and experience sharing.
团队里很多 Node 项目的镜像动辄 1GB+,整理了一份多阶段构建模板,能压到 200MB 内。 关键点:用 alpine、生产阶段不带 devDeps、利用 standalone 输出。 大家的镜像都多大?
接手一个老项目,Docker 镜像 1.2GB,拉一次好几分钟。一步步压到 180MB,过程分享下。 主要做了几件事: 切 alpine 基础镜像(省 400MB)。 多阶段构建,生产镜像不带源码和 devDeps(省 500MB)。 用 npm prune production
本地用 buildx + BuildKit 缓存很香,推到 GitHub Actions 后缓存基本不命中,每次都全量构建。 最后发现是: cache to 的 mode=max 必须开,默认只缓存最终层。 GHA cache 有 10GB 上限,超了会丢老的。 Dockerfi
从零学了半年 K8s,到能独立部署和维护一个小集群。回顾下比较顺的路径,给后来人参考。 我的顺序: 先 kubectl 基本命令,跑通第一个 Deployment + Service。 学 Pod / Deployment / Service / Ingress 四件套概念。 上
小团队 5 人,业务量不大,一直在纠结服务是自托管(VPS)还是直接上云(Vercel/Cloudflare/阿里云函数计算)。 简单算过账: 上云:人力省,但流量大了费用暴涨,被 vendor lock in 绑死。 自托管:便宜可控,但运维占用开发时间,故障自己背。 我们的折
用 Nginx 反代 Next.js,页面能开,但所有 Server Action / 流式响应都挂。排查了半天发现是 buffering 和 Host header 的问题。 正确配置: 关键是 proxy buffering off ,否则 RSC 流式响应会卡住; Host
Serverless / Edge 场景下,每个请求一个 Postgres 连接会很快打满 max connections。两个主流方案:PgBouncer(transaction pooling)和应用层连接池(如 Prisma 的 pgbouncer 模式、postgres.
看到一个独立开发者把所有数据都存 Redis,包括用户、订单、内容。确实快,但我觉得风险不小,想听听大家看法。 我的担忧: 持久化虽然 RDB+AOF,但毕竟主要是内存数据库,大数据量成本高。 复杂查询、聚合基本要自己写,没有 SQL 灵活。 数据迁移、备份、审计工具链远不如 P
代码托管在 GitHub,但公司又在内网部署 GitLab。CI/CD 选哪个一直在吵。 简单对比: GitHub Actions:生态丰富,marketplace 现成 action 多,公开仓库免费。 GitLab CI:跟仓库一体化,Docker in Docker 体验好
做了一个比较稳的灰度发布方案,核心是 Nginx + 多版本 upstream,按权重分流。 进阶版按 cookie/header 灰度:内测用户固定走 v2,其它走 v1。这样能保证同一用户体验一致。 K8s 下用 Istio / Nginx Ingress 的 Canary
小团队上监控,自建 Prometheus + Grafana vs 用托管(Grafana Cloud、阿里云 ARMS)一直在纠结。 自建的好处: 完全可控,数据在自己手里。 长期成本低(机器自己有)。 PromQL 生态丰富。 托管的优点: 不用维护存储、HA、告警链路。 开
想把 traces / metrics / logs 统一到 OTel,接入过程比想象中坑多。 踩过的坑: 自动 instrumentation 和手写 span 混用,trace 经常断。 Node SDK 版本迭代快,文档跟不上。 Exporter 配置(OTLP / Jae