Docker no exemplo de imagem personalizada para o CodeBuild - AWS CodeBuild

Docker no exemplo de imagem personalizada para o CodeBuild

O exemplo a seguir compila e executa uma imagem do Docker usando o AWS CodeBuild e uma imagem de compilação do Docker personalizada (docker:dind no Docker Hub).

Para saber como compilar uma imagem do Docker usando uma imagem de compilação fornecida pelo CodeBuild com suporte do Docker, consulte nosso Exemplo “Publicar imagem do Docker no Amazon ECR”.

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, Amazon S3 pricing, Definição de preço do AWS Key Management Service e Amazon S3 pricing.

Executar o Docker no exemplo de imagem personalizada

Use o procedimento a seguir para executar o Docker em um exemplo de imagem personalizada. Para obter mais informações sobre este exemplo, consulte Docker no exemplo de imagem personalizada para o CodeBuild.

Para executar o Docker no exemplo de imagem personalizada
  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.

    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/DockerCustomImageSample.zip" }, "artifacts": { "type": "NO_ARTIFACTS" }, "environment": { "type": "LINUX_CONTAINER", "image": "docker:dind", "computeType": "BUILD_GENERAL1_SMALL", "privilegedMode": false }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }
    nota

    Por padrão, o daemon do Docker está habilitado para compilações não VPC. Se você quiser usar contêineres do Docker para compilações da VPC, consulte Privilégio de tempo de execução e funcionalidades do Linux no site do Docker Docs e ative o modo privilegiado. Além disso, o Windows não é compatível com o modo privilegiado.

  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: pre_build: commands: - docker build -t helloworld . build: commands: - docker images - docker run helloworld echo "Hello, World!"

Dockerfile (em (root directory name))

FROM maven:3.3.9-jdk-8 RUN echo "Hello World"