Construindo aplicativos usando buildpacks

Uma construção, ou construção de imagem, é um mecanismo que você pode usar para criar uma imagem de contêiner por meio do seu código-fonte. O Code Engine suporta a construção por meio de um Dockerfile e Cloud Native Buildpacks.

Antes de Iniciar

Todos os usuários do Code Engine são obrigados a ter uma conta pré-paga. Os tutoriais podem gerar custos adicionais. Use o Estimador de custos para gerar uma estimativa de custo com base em seu uso planejado. Para obter mais informações, consulte Code Engine precificação.

Configurar o acesso ao registro

Como a saída da construção é uma imagem que é armazenada em um registro de contêiner, deve-se configurar o acesso a um registro de imagem para o Code Engine. Para armazenar uma imagem no Docker Hub, crie o acesso de registro usando o comando ibmcloud ce secret create --format registry. No exemplo a seguir, use o dockerhub como o nome do acesso de registro e especifique o seu ID do Docker Hub como o nome do usuário. Para a senha do Docker Hub, é possível especificar a senha do seu Docker Hub ou um token de acesso.

ibmcloud ce secret create --format registry --name dockerhub --server https://index.docker.io/v1/ --username username --password password

Saída de exemplo

Creating registry secret 'dockerhub'...
OK

Para obter mais informações, consulte incluir documentação de acesso de registro.

Criar uma construção

Crie uma construção que contenha informações sobre o código-fonte para seu app ou tarefa. As informações podem incluir localização e acesso para a tarefa ou o app.

O comando ibmcloud ce build create não cria uma imagem, mas cria a configuração para construir uma imagem. O comando ibmcloud ce buildrun submit referencia a configuração de construção para criar uma imagem. As opções que você especifica no comando build create ou no comando build update não são validadas nem usadas para criar uma imagem até que o comando buildrun submit seja executado. A configuração de construção possibilita várias construções subsequentes de uma imagem, como quando as mudanças são aplicadas ao repositório de origem.

No exemplo a seguir, para criar a configuração de construção, use o comando ibmcloud ce build create. Use tutorial-build como o nome da construção e especifique https://github.com/IBM/CodeEngine como a localização do código-fonte e /s2i-buildpacks como a pasta de diretório de contexto que contém sua origem. Use o segredo de registro do dockerhub que foi criado anteriormente para acesso de registro. Especifique buildpacks como a estratégia de construção para compilar o código-fonte e especifique small como o tamanho de construção.

ibmcloud ce build create --name tutorial-build --source https://github.com/IBM/CodeEngine --commit main --context-dir /s2i-buildpacks --registry-secret dockerhub --image docker.io/<your_docker_ID>/tutorial --size small --strategy buildpacks

Saída de exemplo

Creating build 'tutorial-build'...
OK

A opção size especifica o tamanho para a construção, que determina a quantia de recursos que são usados. Os valores válidos são small, medium, large, xlarge e xxlarge. O size reflete os requisitos de construção para o seu código-fonte para seu app ou tarefa. Se a construção falhar devido à falta de memória ou de espaço em disco ou se não for rápida o suficiente, tente mudar para um tamanho maior. Um tamanho de construção maior também significa que mais núcleos de memória e de CPU são designados ao processo de construção. Aumentar esse tamanho provavelmente pode acelerar o processo de construção, mas essa ação também aumenta o custo. Para obter mais informações sobre construções, verifique as Dicas de resolução de problemas.

Enviar uma execução de compilação

Agora que a sua configuração de construção está criada, é possível executar uma construção com base nessa configuração de construção usando o comando ibmcloud ce buildrun submit. No exemplo a seguir, referencie a configuração de construção tutorial-build e envie a execução de compilação. O sistema gera um nome de execução de compilação exclusivo. É possível, opcionalmente, fornecer um nome para a sua execução de compilação usando a opção --name, que pode ser útil, pois o nome da execução de compilação é necessário para obter detalhes da execução de compilação. Neste exemplo, o sistema gera automaticamente o nome da execução de compilação.

ibmcloud ce buildrun submit --build tutorial-build

Saída de exemplo

Submitting build run 'tutorial-build-run-851026-090000000'...
Run 'ibmcloud ce buildrun get -n tutorial-build-run-851026-090000000' to check the build run status.
OK

Para verificar o status da execução de compilação, use o comando buildrun get ibmcloud ce buildrun get para exibir detalhes da execução de compilação.

ibmcloud ce buildrun get --name tutorial-build-run-851026-090000000

Saída de exemplo

Getting build run 'tutorial-build-run-851026-090000000'...
[...]
OK

Name:          tutorial-build-run-851026-090000000
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           3m42s  
Created:       2021-03-14T14:31:21-05:00  

Summary:  Succeeded  
Status:   Succeeded  
Reason:   Succeeded  

A construção é concluída quando o status é Succeeded.

Se houver um problema com a execução de compilação, use o comando ibmcloud ce buildrun logs para exibir logs sobre a execução de compilação.

ibmcloud ce buildrun logs --buildrun tutorial-build-run-851026-090000000

Saída de exemplo

Getting build run 'tutorial-build-run-851026-090000000'...
Getting instances of build run 'tutorial-build-run-851026-090000000'...
Getting logs for build run 'tutorial-build-run-851026-090000000'...
OK

tutorial-build-run-851026-090000000-7vlrw-pod-c9t6g/step-git-source-source-7tbwh:
{"level":"info","ts":1610378702.42616,"caller":"git/git.go:165","msg":"Successfully cloned https://github.com/IBM/CodeEngine @ 6b66f2bc3e1277c2e6475608a9c50335712116e0 (grafted,  HEAD, origin/main) in path /workspace/source"}
{"level":"info","ts":1610378703.5453625,"caller":"git/git.go:203","msg":"Successfully initialized and updated submodules in path /workspace/source"}
[...]

A sua imagem de contêiner foi construída com sucesso por meio do código-fonte usando a estratégia de construção de buildpacks.

Trabalhar com a imagem de contêiner

Agora que sua imagem de contêiner foi construída e enviada por push para o local do registro de contêiner configurado, é possível implementá-la no Code Engine. Por exemplo, é possível criar um app Code Engine que use a imagem criada.

ibmcloud ce application create --name tutorial-app --image <your_docker_ID>/tutorial

Saída de exemplo

Creating application 'tutorial-app'...
[...]

Próximas etapas para buildpacks

Para obter mais informações, consulte Implementando aplicativos.

O projeto de código-fonte usa o Dockerfile? Siga os mesmos passos, mas especifique a estratégia de construção do Dockerfile para construir uma imagem para seu aplicativo ou tarefa. Para obter mais informações sobre o Dockerfile, consulte Gravando um Dockerfile para o Code Engine.

Procurando mais exemplos de código? Confira as Amostras para IBM Cloud Code Engine GitHub repo.