【问题标题】:Cloud Run doesn’t work with Express static middlewareCloud Run 不适用于 Express 静态中间件
【发布时间】:2019-10-24 01:37:38
【问题描述】:

我有一个提供静态文件的 express 容器,它在本地构建和部署时可以完美运行。但是,当我构建并将其部署到 Cloud Run 时,会返回动态 html,但 css 文件等静态资产是 404。Cloud Run 是否有任何已知限制可能导致这个难以诊断的问题?

【问题讨论】:

  • 难道不是 Cloud Run 用于提供微服务/REST 服务,因此提供静态数据是一个糟糕的选择吗? Cloud Run 不是无状态请求吗?从 GCS 提供静态数据不是更好吗?我想知道问题是否也可能因为返回的 URL 不包含动态 PORT 值而出现?
  • 使用 Docker 或 Podman 在本地机器上运行相同的容器。如果您有同样的问题,那么您知道这不是 Cloud Run。我已经部署了数百个 Cloud Run 服务。据我所知,没有任何事情会导致 Cloud Run 出现问题。
  • @Kolban - 返回的 URLS 不需要动态端口号。只有应用程序的监听器需要动态端口。
  • 是的,从 express 提供静态服务在 prod 中是个坏主意。这是为了开发。
  • 这可能是一篇相关的有用文章...medium.com/google-cloud/…您能否发布一个链接或示例到说明性食谱和脚本?如果无法访问这些人,我们无法说出问题可能出在哪里。如果我们可以尝试进行微不足道的重建,那将是理想的。也许一个(尽可能简单地)说明问题的极简主义应用程序可能会对我们有所帮助。

标签: express google-cloud-run


【解决方案1】:

搜索问题,我发现了这个问题并意识到正确答案被掩盖了,因为它在 SO 的最后评论中。

Google 云使用名为 .gcloudignore 的文件在上传时不忽略某些文件。 如果该文件不存在,则使用 .git 和 .gitignore 文件,并且通常一些资产将在您的 .gitignore 中。

https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore

【讨论】:

    猜你喜欢
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2021-11-19
    • 2021-11-10
    • 2020-04-18
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多