Durante o desenvolvimento, é possível executar e testar a imagem de contêiner localmente, antes da implantação. É possível usar o Cloud Code ou o Docker instalado localmente para executar e testar no local, incluindo a execução local com acesso aos serviços do Google Cloud .
Antes de começar
Se esta é a primeira vez que você está tentando executar localmente, talvez não tenha todas as permissões necessárias para acessar a imagem do seu Container Registry compatível em uso.
Consulte a documentação do Container Registry compatível para saber como ter acesso. É possível configurar o Docker para ter acesso ao Artifact Registry usando o auxiliar de credenciais da gcloud CLI:
gcloud auth configure-dockerLOCATION -docker.pkg.dev
LOCATION
pelo nome da região do repositório de contêineres, por exemplo, us-west2
.
Testar localmente
É possível testar localmente usando o Docker, o Docker com acesso do Google Cloud , o emulador do Cloud Code ou a CLI do Google Cloud. Selecione a guia apropriada para ver instruções:
Para testar sua imagem de contêiner localmente usando o Docker, siga estas etapas:
Use o comando do Docker:
PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT}
IMAGE_URL IMAGE_URL por uma referência à imagem de contêiner, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
; Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
A variável de ambiente
PORT
especifica a porta que o aplicativo usará para detectar solicitações HTTP ou HTTPS. Esse é um requisito do contrato do ambiente de execução do contêiner. Neste exemplo, usamos a porta 8080.Abra http://localhost:9090 no seu navegador.
Se você tem pouca experiência trabalhando com contêineres, consulte o guia de primeiros passos com o Docker. Para saber mais sobre os comandos do Docker, consulte a documentação do Docker.
Se você estiver usando bibliotecas de cliente Google Cloud para integrar seu aplicativo aos serviços Google Cloud e ainda não tiver protegido esses serviços para controlar o acesso externo, será possível configurar o contêiner local para autenticação com os serviços Google Cloud usando o Application Default Credentials.
Para executar localmente:
Consulte as instruções para configurar uma chave de conta de serviço.
As sinalizações de execução do Docker a seguir injetam as credenciais e a configuração do seu sistema local no contêiner local:
- Use a sinalização
--volume
(-v
) para injetar o arquivo de credencial no contêiner (presumindo que você já tenha definido a variável de ambienteGOOGLE_APPLICATION_CREDENTIALS
na máquina):-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/
FILE_NAME .json:ro - Use a sinalização
--environment
(-e
) para definir a variávelGOOGLE_APPLICATION_CREDENTIALS
no contêiner:-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/
FILE_NAME .json
- Use a sinalização
Como opção, use este comando
run
do Docker totalmente configurado:PORT=8080 && docker run \ -p 9090:${PORT} \ -e PORT=${PORT} \ -e K_SERVICE=dev \ -e K_CONFIGURATION=dev \ -e K_REVISION=dev-00001 \ -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/
FILE_NAME .json \ -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME .json:ro \IMAGE_URL Observe que o caminho
mostrado no exemplo acima é um local razoável para colocar suas credenciais no contêiner./tmp/keys/
FILE_NAME .jsonNo entanto, outros locais de diretório também funcionarão. O requisito crucial é que a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
precisa corresponder ao local de ativação da vinculação dentro do contêiner.Além disso, com alguns Google Cloud serviços, convém usar uma configuração alternativa para isolar a solução de problemas local do desempenho e dos dados de produção.
O plug-in do Cloud Code para os ambientes de desenvolvimento integrado do VS Code e da JetBrains permite executar e depurar localmente sua imagem de contêiner em um emulador do Cloud Run no seu ambiente de desenvolvimento integrado. O emulador permite configurar um ambiente que representa o serviço em execução no Cloud Run.
É possível configurar propriedades como alocação de memória e CPU, especificar variáveis de ambiente e definir conexões de banco de dados do Cloud SQL.
- Instale o Cloud Code em um ambiente de desenvolvimento integrado do VS Code ou da JetBrains (links em inglês).
- Siga as instruções para desenvolver e depurar localmente no ambiente de desenvolvimento integrado.
- VS Code: desenvolvimento e depuração no local
- IntelliJ: desenvolvimento e depuração no local
A Google Cloud CLI contém um ambiente de desenvolvimento local para emular o Cloud Run. Ele pode criar um contêiner a partir da origem, executar o contêiner na máquina local e recriar o contêiner automaticamente quando o código-fonte é alterado.
Para iniciar o ambiente de desenvolvimento local, siga estas etapas:
Altere o diretório para o diretório que contém o código-fonte do seu serviço.
Chame o comando:
Se houver um Dockerfile no diretório local, ele será usado para criar o contêiner. Se nenhum Dockerfile estiver presente, o contêiner será criado com os buildpacks do Google Cloud.gcloud beta code dev
Para ver o serviço em execução, acesse http://localhost:8080/ no seu navegador.
Caso tenha especificado uma porta personalizada com a opção --local-port
, lembre-se de abrir seu navegador para ela.
Para interromper o servidor local:
- Mac OS e Linux: Control-C
- Windows: Control-Break
Personalizar a configuração do serviço
É possível personalizar a configuração do Cloud Run do serviço em execução
localmente usando um arquivo YAML. O formato YAML é o mesmo que pode ser usado
para implantar um serviço do Cloud Run, mas é suportado apenas por um subconjunto das configurações do serviço do Cloud Run. O gcloud beta
code dev
procura e usa qualquer arquivo que termine em *.service.dev.yaml
no
diretório atual. Se nenhum for encontrado, ele usará qualquer arquivo que termine com
*.service.yaml
.
É possível definir as seguintes configurações para desenvolvimento local:
- Variáveis de ambiente
- Limites de memória do contêiner
- Limites de CPU do contêiner
- Nome do serviço
- Contas de serviço
O campo de contêiner image
não é obrigatório para o desenvolvimento local, porque a imagem
é criada e fornecida ao serviço quando o comando é executado.
Use o exemplo de arquivo service.dev.yaml
a seguir para desenvolvimento local:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-service-name spec: template: spec: containers: - env: - name: FOO value: bar
Testar usando credenciais
Para conceder permissão ao contêiner para usar serviços Google Cloud , você precisa fornecer a ele uma credencial de acesso.
Para conceder ao contêiner acesso a uma credencial usando sua própria conta, faça login usando gcloud e use a sinalização
--application-default-credential
:gcloud auth application-default login gcloud beta code dev --dockerfile=
PATH_TO_DOCKERFILE --application-default-credentialPara fornecer as credenciais do aplicativo como uma conta de serviço, use a sinalização
--service-account
:gcloud beta code dev --dockerfile=
PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL
Confirmar se o código está sendo executado localmente
Ao testar localmente no Cloud Run, é possível confirmar no código que o contêiner
está sendo executado localmente verificando a variável de ambiente K_REVISION
, que o
Cloud Run disponibiliza para todos os contêineres.
Para confirmar se você está executando seu código localmente na Google Cloud CLI, tente consultar a variável de ambiente K_REVISION
. No entanto, como ela não foi definida, nenhum valor estará presente.
Se você usou os valores exatos da seção acima na etapa 3 para confirmar que
está executando o código localmente na CLI do Google Cloud, consulte a
variável de ambiente K_REVISION
e procure o valor dev-00001
para confirmar
se ele está sendo executado localmente.
Para confirmar se você está executando seu código localmente no Cloud Code, consulte a variável de ambiente K_REVISION
e procure um valor de local
para confirmar se ele está sendo executado localmente.
Para confirmar se você está executando seu código localmente na CLI do Google Cloud, consulte a variável de ambiente K_REVISION
e procure um valor que comece com dev-
para confirmar se ele está sendo executado localmente.
A seguir
- Para saber como solucionar problemas de um aplicativo do Cloud Run com falha localmente, consulte o tutorial Solução de problemas locais de um serviço do Cloud Run.
- Para saber como implantar seus contêineres criados, veja Como implantar serviços.