首页 > 解决方案 > 如何在 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

标签: python-3.xdjangogoogle-cloud-platform

解决方案


好的,让我们从正确的基础开始。在 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从您的环境变量创建一个文件?我不明白你entrypointargs步骤
  • 从文件加载环境变量.env?如果是这样,它就没用了,因为在每一步之间都会卸载上下文。

因此,如果您需要更多指导,解释代码的最终目标,我会相应地更新这个答案。


推荐阅读