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.