Exemplo do servidor de compilação de imagem do Docker para o CodeBuild - AWS CodeBuild

Exemplo do servidor de compilação de imagem do Docker para o CodeBuild

O exemplo a seguir transfere as compilações do Docker para um servidor de compilação de imagens gerenciado. É possível adaptar esse exemplo para provisionar um servidor de compilação de imagens do Docker dedicado e gerenciado na configuração do projeto do CodeBuild. Observe que a instância provisionada está ativa enquanto as compilações são executadas ativamente para o projeto, e a instância é interrompida quando as compilações não estão em execução. A instância provisionada é armazenada por até um mês antes de ser reciclada. Consulte mais informações em CodeBuild Docker Server Capability.

Importante

Executar esta amostra pode resultar em cobranças em sua conta AWS. Isso inclui possíveis cobranças pelo CodeBuild e por recursos da AWS e ações relacionadas ao Amazon S3, ao AWS KMS e ao CloudWatch Logs. Para obter mais informações, consulte Preços do CodeBuild, Definição de preço do Amazon S3, AWS Key Management Service pricing e Definição de preço do Amazon CloudWatch.

Configurar um servidor do Docker

Use o procedimento a seguir para provisionar um ambiente de computação dedicado para um projeto do CodeBuild que gerencia workloads do Docker e armazena camadas de imagem do Docker.

Como configurar um servidor do Docker
  1. Crie os arquivos conforme descrito nas seções Estrutura de diretório e Arquivos deste tópico e faça upload deles em um bucket de entrada do S3 ou em um repositório do AWS CodeCommit, do GitHub ou do Bitbucket.

    Importante

    Não faça upload de (root directory name), apenas dos arquivos dentro de (root directory name).

    Se você estiver usando um bucket de entrada do S3, crie um arquivo ZIP que contenha os arquivos e envie-o para o bucket de entrada. Não adicione (root directory name) ao arquivo ZIP, apenas aos arquivos dentro de (root directory name).

  2. Crie um projeto de compilação, execute a compilação e exiba as respectivas informações:

    1. Na seção Ambiente do console, escolha Configuração adicional, acesse Configuração do servidor do Docker e selecione Habilitar servidor do Docker para este projeto. Depois, você pode escolher o Tipo de computação do servidor do Docker e fornecer uma Credencial do registro.

    2. Se você usar a AWS CLI para criar o projeto de compilação, a entrada em formato JSON para o comando create-project pode ser semelhante a esta. (Substitua os espaços reservados com seus próprios valores.)

      { "name": "sample-docker-custom-image-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/DockerServerSample.zip" }, "artifacts": { "type": "NO_ARTIFACTS" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/amazonlinux-x86_64-standard:5.0", "computeType": "BUILD_GENERAL1_LARGE", "dockerServer": [ { "computeType": "BUILD_GENERAL1_LARGE", "securityGroupIds": [ "security-groups-ID" ] } ] }, "serviceRole": "arn:aws:iam::account-ID:role/role-name" }
      nota

      Os grupos de segurança configurados para servidores do Docker devem permitir a entrada de tráfego de rede da VPC configurada no projeto. Eles devem permitir a entrada na porta 9876.

  3. Para ver os resultados da compilação, procure no log da compilação a string Hello, World!. Para obter mais informações, consulte Visualizar detalhes de compilação.

Estrutura de diretório

Essa amostra pressupõe esta estrutura de diretório.

(root directory name) ├── buildspec.yml └── Dockerfile

Arquivos

A imagem de base do sistema operacional Ubuntu é usada nessa amostra. A amostra usa estes arquivos.

buildspec.yml (em (root directory name))

version: 0.2 phases: build: commands: - docker buildx build . - docker run helloworld echo "Hello, World!"

Dockerfile (em (root directory name))

FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN echo "Hello World"