GAE의 앱.yaml의 env로컬 환경에서variabls를 반복적으로 사용하고 싶습니다
배경.
GAE에서 정식 공연과 무대 디자인을 활용한 node 앱은 환경별로 코드 변경을 원하지 않기 때문에 앱 코드에서는 환경 변수, 앱을 참조하시기 바랍니다.환경마다 yaml을 준비하고 정의
env_variables
를 설정하며 디버깅할 때 설정합니다.제본용
runtime: nodejs12
instance_class: F2
env_variables:
BUCKET_NAME: "staging-gcs-bucket"
정식 공연용
runtime: nodejs12
instance_class: F4
env_variables:
BUCKET_NAME: "production-gcs-bucket"
같은 거요.그건 좋은데 곤란해요.
GAE를 디자인할 때 아무 생각도 하지 않기 때문에 매개 변수 지정도 틀리지 않지만 로컬이나 Docker 용기에서 같은 코드를 이동할 때 하나씩
export BUCKET_NAME=xxx
닫히는 것이 번거롭다.JSON처럼 피해야 할 매개 변수라면 힘들 거야.app.yaml과 Staging.그냥 yaml을 사용해요.
힘들기 때문에 프로그램 코드의 첫머리에yaml을 읽어서 환경 변수를 덮어씁니다.
app.js
async function setEnvVariablesFromYaml(filename){
const jsYaml = require("js-yaml");
const fs = require("fs").promises;
const yamlData = await fs.readFile(`${process.cwd()}/${filename}`, 'utf-8');
const config = jsYaml.safeLoad(yamlData);
// yamlから環境変数を設定する
Object.entries(config.env_variables).map((e)=>{
process.env[e[0]] = e[1];
});
}
if(process.env["NODE_ENV"] === "local"){
const filename = process.env["NODE_YAML_FILE"];
setEnvVariablesFromYaml(filename);
}
런타임
환경 변수를 통해 로컬 실행 플래그와 읽을 파일 이름 전달
export NODE_ENV="local" && NODE_YAML_FILE="staging.yaml"; node app.js
이렇게 하면 직접 사용할 수도 있고env_variables
테스트 코드에 대응하는 예처리 등도 가능하다.솔직함이 좋다.감상
bash에 export라고 낙서하고 뇌근육을 마구 움직이기 때문에 진작 주의를 기울였으면 좋겠어요.
yaml에 맞추어 bash를 관리하지 않아도 되고, 너무 신경을 쓰지 않아도 좋다.
짐승.다들 아시면 진작 알려주세요...!!!
Reference
이 문제에 관하여(GAE의 앱.yaml의 env로컬 환경에서variabls를 반복적으로 사용하고 싶습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/okd_sh/articles/dc8f6caf393c0bac7db8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)