gcloud app deploy '--appyaml'플래그가 작동하지 않는 것 같습니다.
Google App Engine의 경우 배포시 삽입 env_variables
하고 싶습니다 app.yaml
. 에 대한 문서에서 다음 gcloud app deploy
과 같은 플래그가 --appyaml
있음을 알 수 있습니다.
DEPLOYABLE에 정의 된 것을 대체 할 특정 app.yaml로 배포합니다.
https://cloud.google.com/sdk/gcloud/reference/app/deploy
그래서 나는 내를 읽고 app.yaml
, 내 추가 환경 변수를 주입하고,이 새로운 app.yaml을 임시 파일에 쓴 다음 gcloud app deploy
. 명령 gcloud
은 다음과 같이 표시됩니다.
gcloud app deploy . --version dev --project myproject --appyaml='/var/folders/1z/qk45g9p934lg75byl8b74xyh0000gn/T/tmpgdjVUG.yaml'
배포가 성공하고 새 코드가 업로드되지만 새 환경 변수가이를 구성하지 않는 것 같습니다.
가짜 값을 제공 --appyaml
하면 오류가 발생하므로 내 입력을 사용하는 것 같습니다.
내가 뭘 잘못 할 수 있는지 어떤 아이디어?
답변
HelloWorld
다음과 같이 node.JS 를 약간 수정 하여 표준 AppEngine에서 테스트했습니다 .
'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)?
질문은 세부 사항이없는 블랙 박스입니다. "내가 fabfile을 가지고 있는데 일이 발생하지만 잘못 발생합니다." 그러나 여기에 app.yaml
. 다른 yaml 파일을 참조 app.yaml
할 수있는라는 지시문을 포함 할 수 있으며 includes
, 여기서 환경 변수를 가질 수 있으므로 원본 파일을 건드릴 필요가 없습니다.
app.yaml :
(...)
includes:
- my_vars.yaml
my_vars.yaml :
env_variables:
MY_VAR: value