将Reaction部署到生产环境:从Docker镜像到Kubernetes集群扩容的完整指南
将Reaction部署到生产环境从Docker镜像到Kubernetes集群扩容的完整指南【免费下载链接】reactionProject has been discontinued ////// Mailchimp Open Commerce is an API-first, headless commerce platform built using Node.js, React, GraphQL. Deployed via Docker and Kubernetes.项目地址: https://gitcode.com/gh_mirrors/re/reactionReactionMailchimp Open Commerce是一个基于 Node.js、React 和 GraphQL 构建的 API 优先API-first无头电商平台。它天然支持通过Docker和Kubernetes部署无论是单机快速上线还是集群化弹性扩容都能从容应对。本文带你走完 Reaction 生产环境部署的完整路径先理解架构再构建镜像、用 docker-compose 一键启动最后扩展到 Kubernetes 集群。一、先搞懂 Reaction 的生产架构 ⚙️在动手之前先明确 Reaction 运行时依赖的 3 个核心组件组件作用镜像版本参考Reaction API核心电商服务GraphQL 接口 管理后台reactioncommerce/reactionMongoDB主数据库需启用副本集mongo:5.0Redis缓存与任务队列redis:7官方仓库中直接提供了生产与开发两套编排文件可作为部署蓝本生产编排docker-compose.yml开发编排docker-compose.dev.yml生产启动后的 Reaction 管理后台长这样订单、商品、客户、设置一应俱全二、构建生产级 Docker 镜像Reaction 自带专为生产环境优化的多阶段构建 Dockerfile其设计思路值得新手学习第一阶段deps基于node:18.10.0-alpine用 pnpm 只安装生产依赖并预编译sharp图片处理库第二阶段runtime复制依赖产物设置NODE_ENVproduction以非 root 用户node运行并使用tini作为 1 号进程保证信号正确转发。Alpine 基础镜像 非 root 用户 tini 进程管理让最终镜像更小、更安全。本地构建命令非常简单docker build -t reaction:prod apps/reaction -f apps/reaction/Dockerfile注意Reaction 要求 Node.js ≥ 18.10.0见 apps/reaction/.nvmrc 与 apps/reaction/package.json 中的engines字段。三、docker-compose 一键启动 拿到镜像后最直接的生产部署方式是 docker-compose.yml。它做了三件关键的事api 服务挂载.env环境变量文件对外暴露3000端口声明依赖 MongoDBmongo 服务以--replSet rs0启动副本集模式Reaction 依赖 oplog 做数据同步并内置健康检查启动失败会自动重新rs.initiate()持久化卷mongo-db4卷保存数据库文件避免重启丢数据。启动前先准备环境变量文件。仓库提供了模板 apps/reaction/.env.example核心配置如下MONGO_URLmongodb://mongo.reaction.localhost:27017/reaction ROOT_URLhttp://localhost:3000 REDIS_SERVERredis://127.0.0.1:6379 MAIL_URLsmtp://localhost:1025 STRIPE_API_KEYYOUR_PRIVATE_STRIPE_API_KEY配置要点ROOT_URL必须改成你的公网域名否则前端资源与登录回调会指向错误地址MONGO_URL指向容器网络内的 Mongo 地址注意 compose 中声明了外部网络reaction.localhost如需收款填入真实的STRIPE_API_KEY支付插件源码位于 packages/api-plugin-payments-stripe-sca/邮箱发送可接入正式 SMTP替代开发用的 maildev 调试服务。然后执行启动docker-compose up -d几分钟后访问http://服务器IP:3000即可看到电商前台。如果加载了示例数据插件packages/api-plugin-sample-data/前台会展示类似下面的商品四、进阶部署到 Kubernetes 集群 当业务增长需要高可用 弹性扩容时就该升级到 Kubernetes 了。Reaction 与 K8s 的配合思路可以概括为三服务 两配置4.1 服务拆分与资源类型Reaction 组件K8s 资源类型说明MongoDBStatefulSet PVC有状态服务必须绑定持久卷RedisDeployment PVC队列缓存建议单独部署Reaction APIDeployment无状态服务可随意扩缩容域名入口Service / Ingress对外暴露 3000 端口4.2 配置外置ConfigMap 与 Secret把.env中的普通配置如ROOT_URL、MONGO_URL放入ConfigMap把STRIPE_API_KEY、SMTP 密码等敏感项放入Secret然后在 Deployment 中通过envFrom注入实现镜像不变、配置可变的平滑升级。4.3 健康检查与探针Reaction API 启动时会注册 plugins.json 中的全部插件冷启动相对较慢建议startupProbe / livenessProbe指向 3000 端口的健康检查路径给startupProbe设置足够的failureThreshold避免启动阶段被误杀。五、集群扩容与高可用实战 这是 K8s 部署最核心的价值所在水平扩容HPAReaction API 是无状态服务可通过 HorizontalPodAutoscaler 按 CPU/内存或 QPS 自动扩缩副本数轻松应对大促流量洪峰滚动更新零停机Deployment 默认的滚动升级策略配合就绪探针即可实现发布期间流量不中断MongoDB 高可用生产建议将单节点副本集扩展为三节点副本集各节点绑定独立 PVC主节点故障自动切换Redis 持久化开启 AOF 持久化并挂载持久卷保障订单队列消息不丢失。六、上线前检查清单 ✅ROOT_URL已改为正式域名并配置 HTTPS 反向代理Ingress 证书MongoDB 副本集初始化成功数据目录挂载持久卷敏感配置支付密钥、SMTP全部走 K8s SecretAPI 副本数 ≥ 2并配置了资源 requests/limits定期备份mongo-db4数据卷日志与监控已接入如 Loki / Prometheus总结Reaction 的生产部署路径非常清晰——Docker 镜像保证环境一致docker-compose 让你 10 分钟内跑通单机生产Kubernetes 则提供副本集、持久化和 HPA 弹性扩容的完整高可用方案。掌握这套镜像 → 编排 → 集群的三层能力你就能把 Reaction 稳定地推向任何规模的线上环境。【免费下载链接】reactionProject has been discontinued ////// Mailchimp Open Commerce is an API-first, headless commerce platform built using Node.js, React, GraphQL. Deployed via Docker and Kubernetes.项目地址: https://gitcode.com/gh_mirrors/re/reaction创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考