【发布时间】:2021-04-02 18:18:03
【问题描述】:
我正在容器优化操作系统 GCE 实例内的 docker 容器内运行 NodeJS 应用程序。
我需要此实例在其任务完成后关闭自删除。只有 NodeJS 应用程序知道任务完成。
我曾经通过将其设置为 startup-script 来实现此行为:
node ./dist/app.js
echo "node script execution finished. Deleting this instance"
export NAME=$(curl -X GET http://metadata.google.internal/computeMetadata/v1/instance/name -H 'Metadata-Flavor: Google')
export ZONE=$(curl -X GET http://metadata.google.internal/computeMetadata/v1/instance/zone -H 'Metadata-Flavor: Google')
gcloud compute instance-groups managed delete-instances my-group --instances=$NAME --zone=$ZONE
我还使用了基于 NodeJS 应用退出代码的带有附加逻辑的类似设置。
我现在该怎么做?
有两个问题:
- 我不知道如何将 NodeJS 退出事件(最好带有退出代码)传递给
startup-script。我该怎么做? - Container-optimized-OS GCE 实例缺少
gcloud。是否有其他关闭实例的方法?
Google Cloud 的 Healthcheck 似乎太麻烦且不通用。我的应用不是网络服务器,我不想安装express 或其他东西,只是为了处理健康检查。
现在我的startup-script 以docker run ... 命令结束。也许我应该在那之后编写关闭命令并以某种方式在 NodeJS 退出时使 docker 退出?
如果您认为运行状况检查是可行的方法,那么考虑到我的应用不是网络服务器,最简单的运行状况检查设置是什么?
【问题讨论】:
标签: node.js docker google-cloud-platform google-compute-engine