google-app-engine - gcloud 应用程序部署 '--appyaml' 标志似乎不起作用

标签 google-app-engine google-cloud-platform gcloud

对于 Google App Engine,我想在部署时将 env_variables 注入(inject)到我的 app.yaml 中。在 gcloud app deploy 的文档中,我看到有一个 --appyaml 标志,它将:

Deploy with a specific app.yaml that will replace the one defined in the DEPLOYABLE.

https://cloud.google.com/sdk/gcloud/reference/app/deploy

所以我有一个 Fabric 脚本,它读取我的 app.yaml,注入(inject)额外的环境变量,将这个新的 app.yaml 写入临时文件,然后运行 ​​gcloud app deploy. gcloud 的命令最终如下所示:

gcloud 应用程序部署 。 --version dev --project myproject --appyaml='/var/folders/1z/qk45g9p934lg75byl8b74xyh0000gn/T/tmpgdjVUG.yaml'

部署成功并且新代码已上传,但是我的新环境变量似乎无法弥补。

如果我向 --appyaml 提供虚假值,则会引发错误,因此它似乎确实使用了我的输入。

你知道我可能做错了什么吗?

最佳答案

我已经在标准 AppEngine 上对其进行了测试,并在 Node.JS 中进行了小的 HelloWorld 修改,如下所示:

'use strict';

const express = require('express');
const app = express();

app.get('/', (req, res) => {
    var my_respond = "variables: ";
    res.status(200).send(Object.entries(process.env)).end();
});

const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

module.exports = app;

示例显示环境变量作为结果。

比我添加的最简单的app.yaml:

runtime: nodejs10
env_variables:
  MY_VAR: "my value from app.yaml"

与其他位置相比,我添加了不同的 yaml ,称为 app1.yaml:

runtime: nodejs12
env_variables:
  MY_VAR: "my value from app1.yaml"

因此,这正在更改 MY_VAR 的节点版本和值。

根据我的测试,这似乎与文档中解释的有点不同,至少我对它的理解不同。

可以使用 --appyaml 标志,但前提是目录中没有 app.yaml 文件。如果您的应用程序目录中没有它,那么您可以使用该标志指向不同的 yaml

因此,当我尝试使用 gcloud app deploy --appyaml="/home/vitooh/app1.yaml" 进行部署时,app.yaml 位于应用程序目录中,应用程序是随它一起部署的 - 因此该标志不会执行任何操作。但是,当我在没有 app.yaml 的情况下完成此操作时,该标志有效,变量值发生了更改。

实际上,您可以在提交命令后发现它,在确认部署之前,在 descriptor 值中显示摘要,如下所示:

descriptor:      [/home/vitooh/app1.yaml]
source:          [/home/vitooh/appEngine/nodejs-docs-samples/appengine/hello-world/standard]
target project:  [xxxxx-test-01]
target service:  [default]
target version:  [20200819t094956]
target url:      [https://xxxxx-test-01.appspot.com]

Do you want to continue (Y/n)?

关于google-app-engine - gcloud 应用程序部署 '--appyaml' 标志似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63476841/

相关文章:

python - 从 Google Cloud Endpoints 中的请求路径获取参数

python - 从云存储读取,压缩到 BlobStore

google-app-engine - 通过 HTTPS 的 GAE dev_appserver.py

python - 服务帐户没有对 Google Cloud Storage 的 storage.objects.get 访问权限

python - 如何将 base64 图像存储为 GAE 数据存储中的文件

mysql - 将我们的 Google App Engine Python API 连接到 Digital Ocean 上的外部 MySQL 数据库

google-cloud-platform - 是否可以将组织添加到现有的 GCP 帐户?

spring-boot - 失败 : (ID: 838926df) did not find any jar files with a Main-Class manifest entry

python - Google Pubsub Python 客户端库订阅者随机崩溃

ssh - gcloud 计算 ssh 失败