我们有一个NodeJS Cloud Foundry应用程序,启用了DevOps Delivery Pipeline . 我们正在尝试更新我们的部署脚本,以允许我们在没有任何停机的情况下部署应用更新 . 我们现在有一个主要起作用的脚本(见下文) .
但是,我们意识到在部署期间,我们的应用程序将启动两次 . 我们需要在脚本中进行哪些更改,以便只进行一次服务器初始化?这是脚本:
#!/bin/bash
# Push app
if ! cf app $CF_APP; then
cf set-env "${CF_APP}" NODE_ENV development
cf set-env "${CF_APP}" HOST_NAME bluemix
cf push $CF_APP
else
OLD_CF_APP=${CF_APP}-OLD-$(date +"%s")
rollback() {
set +e
if cf app $OLD_CF_APP; then
cf logs $CF_APP --recent
cf delete $CF_APP -f
cf rename $OLD_CF_APP $CF_APP
fi
exit 1
}
set -e
trap rollback ERR
cf rename $CF_APP $OLD_CF_APP
cf push $CF_APP
cf set-env "${CF_APP}" NODE_ENV development
cf set-env "${CF_APP}" HOST_NAME bluemix
cf restage ${CF_APP}
cf delete $OLD_CF_APP -f
fi
1 回答
我建议采取更广泛的看法,并考虑所谓的“blue green deployment” . 基本上,您启动另一个应用程序实例,然后从旧代码版本切换到新代码版本 .
你可以采取不同的方法来实现这样的目标 . 可以使用Cloud Foundry CLI plugins,例如“autopilot " or " blue-green-deploy” . 他们的目标是实现零停机部署 . 您也可以将它们作为输入来编写自己的脚本 .