When deploying to Flexible Environment using the default runtime (e.g. python), we just need to specify different app.yaml files with different entrypoint: values.

But what would the 'best practice' for custom runtimes be for this case?

Multiple Dockerfile's with different CMD values?

But that would mean that each service needs to be built individually. Maybe have a 'base' Dockerfile and image to speed up the build?


Regardless of using a default flexible runtime or a custom one you always need an app.yaml for every service in your app. The difference is in the content of the app.yaml file (apart from the Dockerfile needed for custom runtimes). From Building Custom Runtimes:

To create a custom runtime you need:

  • An app.yaml file that describes your application's runtime configuration.
  • A Dockerfile that configures the runtime environment. In many cases, this can be just one line specifying a base image.


Create an app.yaml file

You must use an app.yaml configuration file with the following settings:

runtime: custom
env: flex


Create a Dockerfile

The Dockerfile is always named Dockerfile and should be placed in the same directory with the corresponding app.yaml file.

The actual content of a service's dockerfile depends on what the service is supposed to do. Theoretically the Dockerfiles contents could even be identical - there is no risk of collisions since they must be located in different directories (since their name is fixed). This is in line with the recommended dir structure of a multi-service/module app (the image is now gone, but it was captured in this older SO post)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.