python-3.x - 如何在 GCP 中创建 env 文件?
问题描述
我试图.env
在 GCP 云构建中创建。cloudbuild.yaml
档案_
steps:
- name: 'python:3.8'
entrypoint: python3
args: ['-m', 'pip', 'install', '-t', '.', '-r', 'requirements.txt']
- name: 'python:3.8'
entrypoint: python3
args: ['touch', '.env']
env:
- 'DATABASE_HOST=$$DB_HOST'
- 'DATABASE_USER=$$DB_USER'
- 'DATABASE_PASSWORD=$$DB_PASS'
- 'DATABASE_NAME=$$DB_NAME'
- 'FIREBASE_CREDENTIALS=$$FIRE_CRED'
- name: 'python:3.8'
entrypoint: python3
args: ['./manage.py', 'collectstatic', '--noinput']
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
timeout: "1600s"
我已经尝试了几种方法来做到这一点,但还没有解决。在我在 env 中使用的 GCP 触发器中创建了替换变量。
问题是
- name: 'python:3.8'
entrypoint: python3
args: ['touch', '.env']
env:
- 'DATABASE_HOST=$$DB_HOST'
- 'DATABASE_USER=$$DB_USER'
- 'DATABASE_PASSWORD=$$DB_PASS'
- 'DATABASE_NAME=$$DB_NAME'
- 'FIREBASE_CREDENTIALS=$$FIRE_CRED'
这部分代码。
先感谢您。
更新
我已经使用args: ['./create-env.py']
而不是 args: ['touch', '.env']
将环境文件写入.env
解决方案
好的,让我们从正确的基础开始。在 Cloud Build 中,每个步骤都会运行一个容器。此运行时基于图像 (the name
) 和几个参数 ( entrypoint
, args
, env
,...)
env
允许您在运行时环境中定义环境变量,例如
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: "echo"
args: ["$$ENV_VAR"]
env:
- 'ENV_VAR=WORKS'
将显示WORKS
. 入口点echo
在参数中$$ENV_VAR
。此环境变量的值,在运行时环境中等于WORKS
。
注意双 $。需要特别指出的是,不要在替换变量(单个 $)中搜索,而是在运行时环境变量中搜索
最后一句话:从一个步骤到另一个步骤,运行时被销毁并重新创建。只/workspace
保留目录。所有其他文件和环境变量都被销毁。
最后,我不确定你想要实现什么:
.env
从您的环境变量创建一个文件?我不明白你entrypoint
的args
步骤- 从文件加载环境变量
.env
?如果是这样,它就没用了,因为在每一步之间都会卸载上下文。
因此,如果您需要更多指导,解释代码的最终目标,我会相应地更新这个答案。
推荐阅读
- reactjs - 如何在 React JS 上以网格的方式显示数据?
- android - 当特定应用程序不在他的设备中时,当我们单击与whatsapp共享的应用程序链接时,如何将用户重定向到播放商店
- pandas - 通过 datetime/pandas 函数运行 pyspark 日期列
- r - 使用ggplot在甘特图中滚动条和格式
- azure-devops - 为 Azure API 管理 (APIM) 设置 CI/CD 管道
- akeneo - Akeneo 导入失败,无法读取或上传文件?
- excel - 更改第二个和以下重复项的值
- java - Junit 5,Mockito,构造函数不初始化值
- php - 如何使用 OOPS 在 php 中使用自定义消息处理 mysql 连接错误
- javascript - 员工发送表单以管理审批