Ejemplo de Docker en una imagen personalizada de CodeBuild - AWS CodeBuild

Ejemplo de Docker en una imagen personalizada de CodeBuild

En el ejemplo siguiente se compila y ejecuta una imagen de Docker mediante AWS CodeBuild y una imagen de compilación de Docker personalizada (docker:dind en Docker Hub).

Para obtener información acerca de cómo crear una imagen de Docker mediante el uso de una imagen de compilación proporcionada por CodeBuild que sea compatible con Docker en su lugar, consulte nuestro Ejemplo de publicación de una imagen de Docker en Amazon ECR.

importante

La ejecución de este ejemplo puede producir cargos en su cuenta de AWS. Estos incluyen posibles cargos por CodeBuild y por acciones y recursos de AWS relacionados con Amazon S3, AWS KMS y Registros de CloudWatch. Para obtener más información, consulte Precios de CodeBuild, Precios de Amazon S3, Precios de AWS Key Management Service y Precios de Amazon CloudWatch.

Ejecución del ejemplo de Docker en una imagen personalizada

Utilice el siguiente procedimiento para ejecutar el ejemplo de Docker en una imagen personalizada. Para obtener más información sobre este ejemplo, consulte Ejemplo de Docker en una imagen personalizada de CodeBuild.

Para ejecutar el ejemplo de Docker en una imagen personalizada
  1. Cree los archivos tal y como se describe en las secciones Estructura de directorios y Archivos de este tema y cárguelos en un bucket de entrada de S3 o en un repositorio de AWS CodeCommit, GitHub o Bitbucket.

    importante

    No cargue (root directory name), solo los archivos incluidos en (root directory name).

    Si utiliza un bucket de entrada de S3, no olvide crear un archivo ZIP que contenga los archivos y cárguelo en el bucket de entrada. No añada (root directory name) al archivo ZIP, solo los archivos incluidos en (root directory name).

  2. Cree un proyecto de compilación, ejecute la compilación y vea la información de compilación relacionada.

    Si usa la AWS CLI para crear el proyecto de compilación, es posible que el resultado con formato JSON del comando create-project tenga un aspecto similar al siguiente. (Sustituya los marcadores de posición por sus propios 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

    De forma predeterminada, el daemon de Docker está habilitado para compilaciones sin VPC. Si quiere usar contenedores de Docker para las compilaciones de VPC, consulte la sección sobre privilegios en tiempo de ejecución y capacidades de Linux en el sitio web de Docker Docs y habilite el modo privilegiado. Además, Windows no admite el modo privilegiado.

  3. Para ver los resultados de compilación, busque en el log de la compilación la cadena Hello, World! Para obtener más información, consulte Ver detalles de las compilaciones.

Estructura de directorios

En este ejemplo se presupone que existe esta estructura de directorios.

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

Archivos

La imagen base del sistema operativo utilizado en este ejemplo es Ubuntu. El ejemplo usa los siguientes archivos.

buildspec.yml (in (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 (in (root directory name))

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