Fin*_*ish 5 environment-variables docker google-cloud-platform google-cloud-run
我已经构建了一个容器化的 python 应用程序,该应用程序使用.env文件和使用 compose build 编译的docker-compose.yml文件在本地运行没有问题。
然后我就可以像这样在 Dockerfile 中使用变量。
ARG APP_USR
ENV APP_USR ${APP_USR}
ARG APP_PASS
ENV APP_PASS ${APP__PASS}
RUN pip install https://${APP_USR}:${APP_PASS}@github.org/*****/master.zip
Run Code Online (Sandbox Code Playgroud)
我正在通过同步的 bitbucket 存储库部署到云运行,并在“修订”>“秘密和变量”下定义,(如下所述: https: //cloud.google.com/run/docs/configuring/environment-variables)但我无法弄清楚如何在构建过程中访问 Dockerfile 中的这些变量。
据我了解,我需要创建一个 cloudbuild.yaml 文件来定义变量,但我无法找到如何使用 cloud run 中定义的环境变量进行设置的清晰示例。
我的理解是,不可能在 Dockerfile 中直接使用 Cloud Run 修订版的环境变量,因为构建是由 Cloud Build 管理的,它在部署之前不知道 Cloud Run 修订版。
但我能够在 Dockerfile 中使用 Secret Manager 的机密。
资料来源:
cloudbuild.yaml:https://cloud.google.com/build/docs/securing-builds/use-secretscloudbuild.yaml到Dockerfile:https ://vsupalov.com/docker-build-pass-environment-variables/快速总结:
在你的情况下,对于APP_USR和APP_PASS:
将密钥的 Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) IAM 角色授予 Cloud Build 服务帐户(请参阅第一个来源)。
availableSecrets在文件末尾添加一个块cloudbuild.yaml(块外steps):
availableSecrets:
secretManager:
- versionName: <APP_USR_SECRET_RESOURCE_ID_WITH_VERSION>
env: 'APP_USR'
- versionName: <APP_PASS_SECRET_RESOURCE_ID_WITH_VERSION>
env: 'APP_PASS'
Run Code Online (Sandbox Code Playgroud)
docker build,Google 的文档使用“bash”,我直接使用 Docker): - id: Build
name: gcr.io/cloud-builders/docker
args:
- build
- '-f=Dockerfile'
- '.'
# Add these two `--build-arg` params:
- '--build-arg'
- 'APP_USR=$$APP_USR'
- '--build-arg'
- 'APP_PASS=$$APP_PASS'
secretEnv: ['APP_USR', 'APP_PASS'] # <=== add this line
Run Code Online (Sandbox Code Playgroud)
Dockerfile:ARG APP_USR
ENV APP_USR $APP_USR
ARG APP_PASS
ENV APP_PASS $APP_PASS
RUN pip install https://$APP_USR:$APP_PASS@github.org/*****/master.zip
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5236 次 |
| 最近记录: |