É possível configurar variáveis de ambiente definidas durante a criação da imagem de contêiner.
Também é possível personalizar a imagem de contêiner estendendo as imagens de build e execução.
Builds locais
Para builds locais, você precisa ter a CLI Pack e o Docker instalados.
Antes de começar
- Instale o Docker Community Edition (CE) na
estação de trabalho. O Docker é usado pela
packcomo um builder de imagens OCI. - Instale a CLI Pack.
- Instale a ferramenta de controle de origem Git para buscar a amostra de aplicativo do GitHub.
Defina as variáveis de ambiente
Para definir variáveis de ambiente para builds locais, anexe a flag --env ao comando pack para cada variável.
É possível usar uma ou mais variáveis de ambiente compatíveis com o ambiente de execução.
pack build SERVICE_NAME \
--env ENVIRONMENT_VARIABLE
Substitua:
SERVICE_NAMEpelo nome do serviço do seu aplicativo ou função.ENVIRONMENT_VARIABLEpela variável de ambiente que você quer definir durante o tempo de build.
- Exemplo
Para definir a variável de ambiente
GOOGLE_ENTRYPOINT="gunicorn -p :8080 main:app"na imagem de contêiner, execute este comando:pack build my-app \ --builder gcr.io/buildpacks/builder:v1 \ --env GOOGLE_ENTRYPOINT="gunicorn -p :8080 main:app" --env MY-LOCAL-ENV-VARIABLE
Builds remotos
Para definir variáveis de ambiente para builds remotos, use o descritor de projeto project.toml.
O descritor de projeto project.toml é usado pelo Cloud Build quando a imagem de contêiner é criada.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build and Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build and Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init - Verifique se o projeto do Google Cloud tem acesso a um repositório de imagens de contêiner.
Para configurar o acesso a um repositório do Docker no Artifact Registry:
- Crie um novo repositório do Docker no mesmo local do seu projeto Google Cloud .
Substitua:gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=REGION --description="DESCRIPTION"
REPO_NAMEpelo nome que você escolheu para o repositório do Docker.REGIONpelo local dentro ou mais próximo do local do seu projeto do Google Cloud .DESCRIPTIONcom uma descrição da sua escolha.
Por exemplo, para criar um repositório
dockeremus-west2com a descrição "repositório do Docker", execute:gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository"
- Verifique se o repositório foi criado:
gcloud artifacts repositories list
Na lista, você verá o nome que escolheu para o repositório do Docker.
- Crie um novo repositório do Docker no mesmo local do seu projeto Google Cloud .
- Clone o repositório de amostra na máquina local:
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- Altere para o diretório que contém o exemplo de código do aplicativo:
Go
cd buildpack-samples/sample-go
Java
cd buildpack-samples/sample-java-gradle
Node.js
cd buildpack-samples/sample-node
PHP
cd buildpack-samples/sample-php
Python
cd buildpack-samples/sample-python
Ruby
cd buildpack-samples/sample-ruby
.NET
cd buildpack-samples/sample-dotnet
- No diretório raiz do serviço, crie ou atualize o descritor de projeto
project.tomlpara incluir a seção[[build.env]]e qualquer uma das variáveis de ambiente compatíveis:[[build.env]] name = "ENVIRONMENT_VARIABLE_NAME" value = "ENVIRONMENT_VARIABLE_VALUE"
Substitua:
ENVIRONMENT_VARIABLE_NAMEpelo nome de uma variável de ambiente compatível.ENVIRONMENT_VARIABLE_VALUEpelo valor correspondente à variável de ambiente especificada.
Exemplo
[[build.env]] name = "GOOGLE_ENTRYPOINT" value = "gunicorn -p :8080 main:app"
- Use
gcloudpara enviar o código-fonte do aplicativo para o Cloud Build:gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
Substitua:
LOCATIONpelo nome da região do repositório de contêineres. Exemplo:us-west2-docker.pkg.devPROJECT_IDcom o ID do seu projeto Google Cloud .REPO_NAMEpelo nome do repositório do Docker.IMAGE_NAMEpelo nome da imagem do contêiner.
Exemplos: se você fez o download de um aplicativo de amostra, execute o comando correspondente:
Go
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-go
Java
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-java-gradle
Node.js
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-node
PHP
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-php
Python
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-python
Ruby
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-ruby
.NET
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-dotnet
-
Verifique se o aplicativo de amostra foi publicado em
REPO_NAME:gcloud artifacts docker images list LOCATION-docker.pkg.dev/project-id/REPO_NAME
Substitua:
LOCATIONpelo nome da região do repositório de contêineres. Exemplo:us-west2-docker.pkg.devPROJECT_IDcom o ID do seu projeto Google Cloud .REPO_NAMEpelo nome do repositório do Docker.