首页 > 解决方案 > Google App Engine - app.yaml 中定义的 Node.js 入口点未触发

问题描述

我有一个 node.js 应用程序,它已经被 Dockerizedgcr.io/google-appengine/nodejs并部署和运行良好。知道默认情况下 GAE 将运行 package.json 中的“启动”脚本,我只是简单地将已经存在的next start -p 8080内容替换为运行没有问题的内容。

我想触发一个替代脚本而不是“开始”,所以我创建了一个名为“cloud-start”的脚本并将上述命令作为值插入。在 app.yaml 我添加了“入口点”属性并yarn cloud-run作为值:

runtime: custom
env: flex
entrypoint: yarn cloud-start
service: my-app

vm_health_check:
 enable_health_check: False

manual_scaling:
  instances: 1

resources:
  memory_gb: 4

不过,“cloud-start”脚本从未执行过——我什至尝试用“npm”替换“yarn”,但仍然没有运气。为什么我的入口点不会触发?

这是我的 Dockerfile,以防万一:

# Use the base App Engine Docker image, based on Ubuntu 16.0.4.
FROM gcr.io/google-appengine/nodejs

# Install locate for debugging purposes
RUN apt-get update -y && \
    apt-get install --no-install-recommends -y -q \
    locate

COPY . /app
WORKDIR /app
RUN  npm install --global yarn
RUN yarn
RUN yarn static

EXPOSE 8080

标签: reactjsdockergoogle-app-enginenext.jsapp.yaml

解决方案


试试entrypoint: npm run cloud-start它对我有用。

这个答案的解释可以在这里找到:https ://issuetracker.google.com/issues/110097743#comment11

yarn仅在构建时可用于安装您的依赖项。之后,yarn 可执行文件在 Node.js 运行时中不可用。

如果你想运行你的“dev”脚本,只需使用“start”:“npm run dev”


推荐阅读