wp-calypso部署手册Docker构建与production、stage、horizon多环境配置模式全解析【免费下载链接】wp-calypsoThe JavaScript and API powered WordPress.com项目地址: https://gitcode.com/gh_mirrors/wp/wp-calypsowp-calypso 是 WordPress.com 的 JavaScript 前端应用一套代码、多个环境。它的核心部署能力在于通过 config/ 目录下按环境命名的 JSON 配置文件配合 Docker 多阶段构建让同一份构建产物在 production、stage、horizon、development 等环境间灵活切换并借助 feature flags功能开关实现灰度发布。本文带你快速掌握 wp-calypso 的 Docker 构建流程与多环境配置模式。多环境配置一览production、stage、horizon 各是什么所有环境配置集中在 config/ 目录每个环境一个 JSON 文件环境标识CALYPSO_ENV配置文件env_id典型域名用途productionproduction.jsonproductionwordpress.com正式生产环境stagestage.jsonstagewordpress.com预发生产预演配置几乎与生产一致horizonhorizon.jsonhorizonhorizon.wordpress.com独立预发布域名先于 stage 验证wpcalypsowpcalypso.jsonwpcalypsowpcalypso.wordpress.com内部测试环境developmentdevelopment.jsondevelopmentcalypso.localhost:3000本地开发几个关键点stage 与 horizon 都声明env: production但env_id和hostname不同如 horizon.json 的hostname为horizon.wordpress.com并使用独立 favicon。这样它们继承生产的构建与密钥体系同时拥有独立的访问入口。_shared.json 是所有环境的公共默认值各环境文件只写差异项避免大量重复。客户端可见性由 client.json 白名单控制只有列在其中的 key如features、login_url才会随初始请求发送到浏览器。配置是如何被选中的服务端启动逻辑在 client/server/config/index.jsenv: process.env.CALYPSO_ENV || process.env.NODE_ENV || development也就是说优先读CALYPSO_ENV其次NODE_ENV默认development。改一个环境变量即可切换整套环境配置。Docker 构建一个 Dockerfile 跑通整个部署wp-calypso 的 Docker 构建由根目录 Dockerfile 驱动采用多阶段构建 依赖层缓存的设计理解它只要看懂四个阶段缓存阶段cache_mode通过ARG cache_modeseed选择是否预热 yarn 缓存builder-cache-seed从 cache-seed 镜像复制.cache与.yarn目录大幅加速 CI 构建。依赖阶段deps只先复制 package.json、yarn.lock 和各 workspace 的 manifest 再执行yarn install --immutable。源文件变化不会破坏这一层缓存——这是 Docker 构建提速的关键。其中 env-config.sh 是占位脚本供部署系统覆盖 apt/npm 镜像源本地默认为空文件以保证该层缓存稳定命中。构建阶段builder完整复制源码后设置CALYPSO_ENVproduction、NODE_ENVproduction执行yarn run build并删除全部 sourcemapfind /calypso/build /calypso/public -name *.*.map -delete保证生产产物干净构建结束还会检查缓存失效日志bin/check-log-for-cache-invalidation.sh。运行阶段app切换到轻量的node:alpine只拷贝build/、public/、config/ 目录以nobody 非 root 用户tini进程管理器启动node build/server.js。一条命令构建与运行仓库自带了构建与运行脚本# 构建镜像自动注入 git commit SHA 作为构建参数 yarn build-docker # 实际调用 bin/build-docker.js # 运行默认 production 配置容器 3000 端口映射到主机 80 端口 yarn docker # docker run -it --rm -p 80:3000 wp-calypso # 其他产品线部署只需换 CALYPSO_ENV yarn docker-jetpack-cloud # CALYPSO_ENVjetpack-cloud-production yarn docker-dashboard # CALYPSO_ENVdashboard-productionyarn build-docker背后的 bin/build-docker.js 会把git rev-parse HEAD作为commit_sha传入镜像方便线上排查版本。此外 Dockerfile.base 和 Dockerfile.cache-seed 分别提供基础构建镜像与缓存预热镜像供 CI 流水线复用。feature flags多环境灰度发布的灵魂每个环境 JSON 里都有一个巨大的features对象。同一功能可以在不同环境开不同的值——这就是灰度发布机制。官方建议的环境递进路径见 config/README.mddevelopment → wpcalypso → horizon → stage → production功能应从左侧环境逐级开启若某功能已在 horizon 开启则其左侧的 development、wpcalypso 也应开启。上线 production 后应清理对应的 flag 判断保持代码整洁。实用操作速查本地开关 flagENABLE_FEATURESsome/flag-name DISABLE_FEATURESreader yarn startURL 开关 flag仅 development/staging 等production 禁用?flagsfoo,-bar搜索 flag 定义位置yarn feature-search 关键词工具是 bin/feature-search.js新增 flag 时请按字母序添加到所有配置文件development、production、horizon、stage 等本地快速部署路径如果只是想在本机跑起来验证部署流程完整说明见 docs/install.md在 hosts 文件添加127.0.0.1 calypso.localhostyarn yarn start浏览器访问http://calypso.localhost:3000加速构建SECTION_LIMITreader,login yarn start只构建指定 section本地实验 flag在仓库根目录创建.env写入ACTIVE_FEATURE_FLAGSxxx部署要点清单✅ 环境切换只认CALYPSO_ENV其次NODE_ENV默认 development✅ stage/horizon 复用 production 构建env: production靠env_id与hostname区分入口✅ Docker 构建先拷依赖清单后拷源码善用层缓存✅ 生产镜像自动删除 sourcemap并以 nobody 用户运行✅ 灰度发布严格按 development → wpcalypso → horizon → stage → production 推进更多细节参考config/README.md配置体系、docs/install.md安装运行、docs/development-workflow.md开发工作流。【免费下载链接】wp-calypsoThe JavaScript and API powered WordPress.com项目地址: https://gitcode.com/gh_mirrors/wp/wp-calypso创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
