Google Cloud Build - 传递 Dockerfile 的环境变量

Luk*_*ggy 10 google-cloud-build google-cloud-run

I\xc2\xb4m 尝试将我的 Angular 应用程序进行 dockerize 以用于 Cloud Run,然后根据环境变量使用生产或开发配置有条件地构建它。

\n

云构建命令

\n

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

\n

Dockerfile

\n
FROM node:14\n\nWORKDIR usr/src/app\n\nCOPY package*.json ./\n\nRUN npm install\n\n# Copy local code to the container\nCOPY . .\n\n# Build app\nRUN if [ "$ENV" = "development" ] ; then npm run build-dev:ssr ; else npm run build-prod:ssr ; fi\n\nCMD ["npm", "run", "serve:ssr"]\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

gui*_*ere 13

您无法像使用 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
Run Code Online (Sandbox Code Playgroud)

像这样运行它

gcloud builds submit --substitutions=_MY_VARIABLE=specific_value
Run Code Online (Sandbox Code Playgroud)

  • 是的,这很正常,您需要在 dockerfile 中添加 `ARG ENV` 行来告诉 docker 在外部世界和内部世界之间建立链接! (3认同)