Durante o desenvolvimento, pode executar e testar a imagem do contentor localmente antes da implementação. Pode usar o Cloud Code ou o Docker instalado localmente para executar e testar localmente, incluindo a execução local com acesso aos Google Cloud serviços.
Antes de começar
Se estiver a tentar executar o código localmente pela primeira vez, pode não ter todas as autorizações necessárias para aceder à imagem a partir do registo de contentores suportado que está a usar.
Consulte a documentação do registo de contentores suportado sobre como obter acesso. Pode configurar o Docker para aceder ao Artifact Registry através do auxiliar de credenciais da CLI gcloud:
gcloud auth configure-docker LOCATION-docker.pkg.dev
LOCATION
pelo nome da região do seu repositório de contentores, por exemplo, us-west2
.
Teste localmente
Pode testar localmente através do Docker, do Docker com Google Cloud acesso, do emulador do Cloud Code ou da CLI do Google Cloud. Selecione o separador adequado para ver instruções.
Docker
Para testar a imagem de contentor localmente com o Docker:
Use o comando do Docker:
PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL
Substitua IMAGE_URL por uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.A variável de ambiente
PORT
especifica a porta que a sua aplicação vai usar para ouvir pedidos HTTP ou HTTPS. Este é um requisito do contrato de tempo de execução do contentor. Neste exemplo, usamos a porta 8080.Abra http://localhost:9090 no navegador.
Se está a trabalhar com contentores pela primeira vez, recomendamos que reveja o guia de introdução ao Docker. Para saber mais sobre os comandos do Docker, consulte a documentação do Docker.
Docker com acesso ao Google Cloud
Se estiver a usar Google Cloud bibliotecas de cliente para integrar a sua aplicação com os serviços Google Cloud e ainda não tiver protegido esses serviços para controlar o acesso externo, pode configurar o seu contentor local para autenticar com os serviços Google Cloud através das credenciais predefinidas da aplicação.
Para executar localmente:
Consulte as instruções para configurar uma chave de conta de serviço.
As seguintes flags de execução do Docker injetam as credenciais e a configuração do seu sistema local no contentor local:
- Use a flag
--volume
(-v
) para injetar o ficheiro de credenciais no contentor (pressupõe que já definiu a variável de ambienteGOOGLE_APPLICATION_CREDENTIALS
no seu computador):-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
- Use o sinalizador
--environment
(-e
) para definir a variávelGOOGLE_APPLICATION_CREDENTIALS
no contentor:-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
- Use a flag
Opcionalmente, 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
Tenha em atenção que o caminho
apresentado no exemplo acima é uma localização razoável para colocar as suas credenciais no contentor./tmp/keys/FILE_NAME.json
No entanto, outras localizações de diretórios também funcionam. O requisito crucial é que a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
tem de corresponder à localização de montagem de ligação no contentor.Tenha também em atenção que, com alguns Google Cloud serviços, pode querer usar uma configuração alternativa para isolar a resolução de problemas local do desempenho e dos dados de produção.
Emulador do Cloud Code
O plug-in Cloud Code para o VS Code e os IDEs JetBrains permite-lhe executar e depurar localmente a sua imagem de contentor num emulador do Cloud Run no seu IDE. O emulador permite-lhe configurar um ambiente representativo do seu serviço em execução no Cloud Run.
Pode configurar propriedades como a atribuição de CPU e memória, especificar variáveis de ambiente e definir ligações à base de dados do Cloud SQL.
- Instale o Cloud Code para o VS Code ou um IDE da JetBrains.
- Siga as instruções para desenvolver e depurar localmente no seu IDE.
- VS Code: desenvolvimento e depuração locais
- IntelliJ: desenvolvimento e depuração locais
CLI gcloud
A CLI do Google Cloud contém um ambiente de desenvolvimento local para emular o Cloud Run, que pode criar um contentor a partir da origem, executar o contentor na sua máquina local e recriar automaticamente o contentor após alterações ao código fonte.
Para iniciar o ambiente de programação local:
Altere o diretório para o diretório que contém o código-fonte do seu serviço.
Invocar o comando:
Se existir um Dockerfile no diretório local, este é usado para criar o contentor. Se não estiver presente nenhum Dockerfile, o contentor é criado com os buildpacks do Google Cloud.gcloud beta code dev
Para ver o serviço em funcionamento, visite http://localhost:8080/ no seu navegador.
Se especificou uma porta personalizada com a opção --local-port
, lembre-se de
abrir o navegador nessa porta.
Para parar o servidor local:
- Mac OS e Linux: Control-C
- Windows: Control-Break
Personalize a configuração do serviço
Pode personalizar a configuração do Cloud Run do serviço em execução localmente através de um ficheiro YAML. O formato YAML é o mesmo que pode ser usado para implementar um serviço do Cloud Run, mas apenas suporta um subconjunto das definições do serviço do Cloud Run. gcloud beta
code dev
procura e usa qualquer ficheiro que termine em *.service.dev.yaml
no diretório atual. Se não forem encontrados ficheiros, o sistema usa qualquer ficheiro que termine com *.service.yaml
.
Pode configurar as seguintes definições para o desenvolvimento local:
- Variáveis de ambiente
- Limites de memória do contentor
- Limites da CPU do contentor
- Nome do serviço
- Contas de serviço
O campo do contentor image
não é necessário para o desenvolvimento local, porque a imagem é criada e fornecida ao serviço quando o comando é executado.
Pode usar o seguinte ficheiro de exemplo service.dev.yaml
para o desenvolvimento local:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-service-name spec: template: spec: containers: - env: - name: FOO value: bar
Teste com credenciais
Para conceder autorização ao contentor para usar Google Cloud serviços, tem de conceder ao contentor uma credencial de acesso.
Para conceder ao contentor acesso a uma credencial através da sua própria conta, inicie sessão através do gcloud e use a flag
--application-default-credential
:gcloud auth application-default login gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --application-default-credential
Para dar as credenciais da aplicação como uma conta de serviço, use a flag
--service-account
:gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL
Confirme que o código está a ser executado localmente
Quando testa localmente no Cloud Run, pode confirmar no seu código que o contentor está a ser executado localmente verificando a variável de ambiente K_REVISION
, que o Cloud Run disponibiliza a todos os contentores.
Docker
Para confirmar que está a executar o seu código localmente na CLI do Google Cloud, pode
tentar consultar a variável de ambiente K_REVISION
, mas, como não foi
definido, não vai estar presente nenhum valor.
Docker com acesso ao Google Cloud
Se usou os valores exatos da secção acima no passo 3 para confirmar que está a executar o código localmente na CLI do Google Cloud, pode consultar a variável de ambiente K_REVISION
e procurar o valor dev-00001
para confirmar que está a ser executado localmente.
Emulador do Cloud Code
Para confirmar que está a executar o seu código localmente no Cloud Code, pode consultar a variável de ambiente K_REVISION
e procurar um valor de local
para confirmar que está a ser executado localmente.
CLI gcloud
Para confirmar que está a executar o seu código localmente na CLI Google Cloud, pode
consultar a variável de ambiente K_REVISION
e procurar um valor que comece
com dev-
para confirmar que está a ser executado localmente.
O que se segue?
- Para saber como resolver problemas de uma aplicação do Cloud Run localmente, consulte o tutorial de Resolução de problemas local de um serviço do Cloud Run.
- Para saber como implementar os contentores criados, siga as instruções em Implementar serviços.