gcloud app deploy '--appyaml' bayrağı çalışmıyor
Google App Engine için, ben enjekte etmek istiyorum env_variables
benim içine app.yaml
üzerine dağıtmak. Belgelerinde , şunları yapacak gcloud app deploy
bayrak --appyaml
olduğunu görüyorum :
DEPLOYABLE'da tanımlananın yerini alacak belirli bir app.yaml ile dağıtın.
https://cloud.google.com/sdk/gcloud/reference/app/deploy
Bu yüzden, kendimi okuyan app.yaml
, fazladan env değişkenlerimi enjekte eden, bu yeni app.yaml dosyasını bir geçici dosyaya yazan ve sonra çalışan bir Fabric betiğim var gcloud app deploy
. Şu şekilde gcloud
sonuçlanacak komut :
gcloud app deploy . --version dev --project myproject --appyaml='/var/folders/1z/qk45g9p934lg75byl8b74xyh0000gn/T/tmpgdjVUG.yaml'
Dağıtım başarılı oldu ve yeni kod yüklendi, ancak yeni ortam değişkenlerim bunu uydurmuyor.
Sahte bir değer sağlarsam --appyaml
, bir hata atar, bu yüzden girdimi kullanıyor gibi görünür.
Neyi yanlış yapabileceğime dair bir fikrin var mı?
Yanıtlar
Bunu, HelloWorld
node.JS'de küçük değişikliklerle standart AppEngine üzerinde test ettim :
'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;
Örnek, sonuç olarak ortam değişkenlerini gösteriyor.
En basitini eklediğimden app.yaml
:
runtime: nodejs10
env_variables:
MY_VAR: "my value from app.yaml"
Başka bir yerde daha farklı yaml
ad ekledim app1.yaml
:
runtime: nodejs12
env_variables:
MY_VAR: "my value from app1.yaml"
Yani bu, düğüm sürümünü ve değerini değiştiriyor MY_VAR
.
Testlerime göre bu, belgede açıklanandan biraz farklı çalışıyor gibi görünüyor, en azından farklı şekilde anlıyorum.
--appyaml
Bayrak kullanmak mümkündür , ancak yalnızca app.yaml
dizinde dosya yokken . Eğer uygulama dizininde yoksa, bayrağı kullanmaktan farklı bir yere işaret edebilirsiniz yaml
.
Bu yüzden, ben ile konuşlandırmaya çalışırken gcloud app deploy --appyaml="/home/vitooh/app1.yaml"
ve app.yaml
uygulama dizinindeyken, uygulama onunla birlikte dağıtıldı - bu nedenle bayrak hiçbir şey yapmıyor. Ancak app.yaml
bayrak çalışmadan yaptığımda değişken değeri değişiyor.
Aslında bunu, komutu gönderdikten hemen sonra, gösterilen bir özetin olduğu yerde, dağıtımı onaylamadan hemen önce, şu descriptor
değerde görebilirsiniz:
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)?
Soru, herhangi bir ayrıntı içermeyen bir kara kutu: "Benim bir dosyam var ve sonra işler oluyor ama yanlış oluyor". Bununla birlikte, bununla uğraşmadan biraz daha basit bir şekilde nasıl yapılacağına dair bir ipucu app.yaml
. ortam değişkenlerine sahip olabileceğiniz, böylece orijinal dosyaya dokunmanıza gerek kalmayan başka bir yaml dosyasına referans verebilen app.yaml
adında bir yönerge içerebilir includes
.
app.yaml:
(...)
includes:
- my_vars.yaml
my_vars.yaml:
env_variables:
MY_VAR: value