How to set different ENV variable when building and deploying Docker Image to Cloud Run?

I have a backend service that I’ll need to deploy to Google Cloud Run.

From Google’s tutorial on Cloud Run, we get that:

First you need to build your image and send it to Cloud Build.

gcloud builds submit --tag

Only then you deploy it to Cloud Run:

gcloud run deploy --image --platform managed

I get the sequence above. But I’ll be deploying this service to 2 different environments: TEST and PROD.

So I need an SERVER_ENV variable, that should be "PROD" on my production environment, and of course it should be "TEST" on my test environment. This is so my server (express server that will be run from the container) knows which database to connect to.

But the problem is that I only have a single Dockerfile:

FROM node:12-slim



COPY ./package.json ./package.json
COPY ./distApp ./distApp
COPY ./distService ./distService
COPY ./public ./public

RUN npm install

ENTRYPOINT npm start

So how can I set different ENV variables while following the build & deploy sequence above? Is there an option in the gcloud builds submit comment that I can maybe override something? Or use a different Dockerfile? Anybody got other ideas?


Maybe use the Cloud Build configuration file?


Source: Docker Questions