【问题标题】:Google Cloud Build - Pass environment variable for DockerfileGoogle Cloud Build - 为 Dockerfile 传递环境变量
【发布时间】:2021-05-19 06:02:10
【问题描述】:

我正在尝试将我的 Angular 应用程序用于 Cloud Run,然后根据环境变量有条件地使用生产或开发配置构建它。

云构建命令:

gcloud builds submit --tag gcr.io/project-id/image-id --timeout=1200

Dockerfile:

FROM node:14

WORKDIR usr/src/app

COPY package*.json ./

RUN npm install

# Copy local code to the container
COPY . .

# Build app
RUN if [ "$ENV" = "development" ] ; then npm run build-dev:ssr ; else npm run build-prod:ssr ; fi

CMD ["npm", "run", "serve:ssr"]

目前,$ENV 不存在,但有没有办法通过 gcloud build submit 命令传递它?

【问题讨论】:

标签: google-cloud-run google-cloud-build


【解决方案1】:

您不能像使用 docker build 命令一样传递构建参数。为此,您需要创建一个简单的 Cloud Build 文件

steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: [ 'build', '-t', 'gcr.io/project-id/image-id', '--build-arg=ENV=$_MY_VARIABLE', '.' ]
  # push the container image to Container Registry
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/project-id/image-id']
images:
  - 'gcr.io/project-id/image-id'
timeout: 1200s
substitutions:
  _MY_VARIABLE: default value if not passed in the build command

然后像这样运行它

gcloud builds submit --substitutions=_MY_VARIABLE=specific_value

【讨论】:

  • 感谢您采用这种干净的方法。
  • 是的,这很正常,你需要在你的dockerfile中添加ARG ENV这一行告诉docker来建立外部世界和内部世界的链接!
猜你喜欢
  • 2018-04-27
  • 2022-10-02
  • 2021-09-15
  • 2019-01-05
  • 1970-01-01
  • 2021-04-14
  • 2021-02-13
  • 1970-01-01
  • 2018-02-06
相关资源
最近更新 更多