Google Cloud's buildpacks is an open-source project that takes your application source code and transforms it into production-ready container images. The buildpacks published by Google Cloud implement the Cloud Native Buildpack specification and are designed to help you build and configure containers that you can deploy to Google Cloud.
A buildpack is typically responsible for a language
component, toolchain, or app component; such as Python, pip
, or a web server.
Buildpacks are grouped together into collections called
builders that can analyze project source code,
create a build plan, and generate a container image that is ready for deployment.
Containerization with buildpacks
When you deploy to and serve your application (service) or function on the Google Cloud Serverless products, your code gets packaged into a runnable container using buildpacks. On Cloud Run, you have the option to deploy a pre-built container or deploy your source code to let Cloud Run manage the container build. On Cloud Run functions and App Engine, the containerization process is fully-managed, meaning that when you deploy your source code, all the container image packaging and converting is done for you.
Each container image gets built with all the components needed for running your deployment, including source code, system and library dependencies, configuration data, and static assets. By default, the Google Cloud Serverless products use the same underlying services, including Cloud Build for the deployment pipeline, and either Container Registry or Artifact Registry for container image storage and management.
When using Google Cloud's buildpacks:
- Builders and buildpacks are pre-configured to handle the build process and create a runnable container image for you.
- Buildpacks support multiple programming languages and automatically detects which lanaguage is used in your source code.
- You can customize and extend buildpacks to install additional system dependencies. However, the default builder can handle the common tasks required by your programming language, including installing dependencies from the language's package repository and using the language's common dependency file.
Use buildpacks to containerize your code
Buildpacks can be used locally or remotely to:
For programming languages that exclude a standard ways to start an application,
you can use a Procfile
to define the process to invoke when a container starts.
A Procfile
can be used to override the default start process for any
buildpacks type, but is mandatory for some, including
Python.