Tutorial: Cree e inserte una imagen de Docker en Amazon ECR con CodePipeline (tipo V2) - AWS CodePipeline

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial: Cree e inserte una imagen de Docker en Amazon ECR con CodePipeline (tipo V2)

Este tutorial le ayuda a crear una acción de compilación CodePipeline que ejecute y envíe su imagen de Docker a Amazon ECR tras un cambio en el código fuente. En este tutorial, también se muestra cómo agregar una acción de implementación de Amazon ECS que implemente la imagen insertada.

importante

Como parte de la creación de una canalización en la consola, for Artifacts Bucket utilizará un bucket de artefactos de S3. CodePipeline (Es diferente del bucket que se usa para una acción de origen de S3). Si el depósito de artefactos de S3 está en una cuenta diferente a la de tu canalización, asegúrate de que el depósito de artefactos de S3 pertenezca a una Cuentas de AWS persona segura y fiable.

nota

Este tutorial describe la acción de ECRBuild AndPublish creación de una CodePipeline canalización con un repositorio de GitHub origen y una acción estándar de Amazon ECS para la implementación en un clúster de Amazon ECS. Para ver un tutorial que utiliza una canalización con un repositorio de imágenes ECR como fuente de una acción de implementación de Amazon ECS a CodeDeploy azul/verde, consulte. CodePipeline Tutorial: Crear una canalización con un origen de Amazon ECR y una implementación de ECS-to-CodeDeploy

importante

Esta acción utiliza la CodeBuild computación CodePipeline administrada para ejecutar comandos en un entorno de compilación. Si ejecuta la acción de Comandos, se le cobrarán cargos por separado en AWS CodeBuild.

Requisitos previos

Para poder usar este tutorial para crear su propia canalización de implementación continua debe tener instalados algunos recursos. Esto es lo que necesita para empezar:

nota

Todos estos recursos deben crearse en la misma AWS región.

  • Un repositorio de control de código fuente (se utiliza en este tutorial GitHub) en el que añadirá lo siguiente para este tutorial:

    • En el paso 1, añadirá un ejemplo de Dockerfile a su repositorio fuente como artefacto de entrada para la acción de ECRBuild AndPublish compilación en él. CodePipeline

    • En el paso 2, agregará un archivo imagedefinitions.json de muestra a su repositorio de origen como requisito para la acción de implementación estándar de Amazon ECS en. CodePipeline

  • Un repositorio de imágenes de Amazon ECR que contiene una imagen compilada desde el Dockerfile. Para obtener más información, consulte Creación de un repositorio e Inserción de una imagen en la Guía del usuario de Amazon Elastic Container Registry.

  • Un servicio y un clúster de Amazon ECS creados en la misma región que el repositorio de imágenes. Para obtener más información, consulte Creación de un clúster y Creación de un servicio en la Guía para desarrolladores de Amazon Elastic Container Service.

Una vez satisfechos estos requisitos previos, puede continuar con el tutorial y crear su canalización de implementación continua.

Paso 1: agregación de un Dockerfile al repositorio de código fuente

En este tutorial, se utiliza la ECRBuild AndPublish acción para crear la imagen de Docker y enviarla a Amazon ECR. La acción de cómputo gestionado se CodePipeline utiliza CodeBuild para ejecutar los comandos de inicio de sesión y inserción de imágenes en el ECR. No necesita añadir un buildspec.yml archivo a su repositorio de código fuente para saber CodeBuild cómo hacerlo. Para este ejemplo, solo debe proporcionar el Dockerfile en el repositorio tal y como se indica a continuación.

Pegue este texto de ejemplo para crear su archivo Dockerfile. Este Dockerfile de ejemplo es el mismo que el utilizado en las instrucciones de las imágenes de ECR en los requisitos previos.

FROM public.ecr.aws/amazonlinux/amazonlinux:latest # Install dependencies RUN yum update -y && \ yum install -y httpd # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \ echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh
Para añadir un archivo Dockerfile a su repositorio de código fuente
  1. Abra un editor de texto y luego copie y pegue el Dockerfile anterior en un archivo nuevo.

  2. Confirme la operación e inserte el archivo Dockerfile en el repositorio de código fuente.

    1. Añada el archivo.

      git add .
    2. Valide el cambio con.

      git commit -m "Adding Dockerfile."
    3. Envíe la confirmación.

      git push

    Asegúrese de colocar el archivo en el nivel raíz del repositorio.

    / Dockerfile

Paso 2: agregación del archivo imagedefinitions.json a su repositorio de código fuente

En este tutorial, se utiliza la acción de implementación estándar de Amazon ECS CodePipeline para implementar el contenedor en el clúster de Amazon ECS. La acción de implementación estándar de Amazon ECS requiere un archivo imagedefinitions.json que contenga el nombre y el URI de la imagen. Para obtener más información sobre el archivo imagedefinitions.json, consulte Archivo imagedefinitions.json para las acciones de implementación estándar de .

Pegue este texto de ejemplo para crear su archivo imagedefinitions.json. Use el nombre del Dockerfile, por ejemplo hello-world, y use el URI del repositorio de Amazon ECR donde está almacenada la imagen.

[ { "name": "hello-world", "imageUri": "ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/actions/image-repo" } ]
Cómo agregar un archivo imagedefinitions.json a su repositorio de código fuente
  1. Abra un editor de texto y luego copie y pegue el archivo anterior en un archivo nuevo.

  2. Confirme la operación e inserte el archivo imagedefinitions.json en el repositorio de código fuente.

    1. Añada el archivo.

      git add .
    2. Valide el cambio con.

      git commit -m "Adding imagedefinitions.json."
    3. Envíe la confirmación.

      git push

    Asegúrese de colocar el archivo en el nivel raíz del repositorio.

    / imagedefinitions.json

Paso 3: creación de una canalización

Utilice el CodePipeline asistente para crear las etapas de la canalización y conectar el repositorio de origen.

Para crear la canalización
  1. Abre la CodePipeline consola en https://console.aws.amazon.com/codepipeline/.

  2. En la página Bienvenido, Introducción o Canalizaciones, elija Crear canalización.

  3. En la página Paso 1: elección de la opción de creación, en Opciones de creación, seleccione la opción Crear una canalización personalizada. Elija Siguiente.

  4. En Paso 2: elegir la configuración de la canalización, en Nombre de la canalización, escriba MyPipeline.

  5. CodePipeline proporciona tuberías de tipo V1 y V2, que difieren en características y precio. El tipo V2 es el único tipo que puede elegir en la consola. Para obtener más información, consulte Tipos de canalización. Para obtener información sobre los precios de CodePipeline, consulte Precios.

  6. En Función de servicio, elija Nueva función de servicio CodePipeline para poder crear una función de servicio en IAM.

  7. En Advanced settings (Configuración avanzada), deje los valores predeterminados y elija Next (Siguiente).

  8. En la página Paso 3: agregar la etapa de origen, agregue una etapa de origen:

    1. En Proveedor de origen, elija GitHub (a través de GitHub la aplicación).

    2. En Conexión, seleccione una conexión existente o cree una nueva. Para crear o gestionar una conexión para la acción GitHub de origen, consulteGitHub conexiones.

    3. En Repository name (Nombre de repositorio), elija el nombre de su repositorio de GitHub .

    4. En la Ramificación predeterminada, elige la ramificación que quiere especificar cuando la canalización se inicie manualmente o con un evento de origen que no sea una etiqueta de Git. Si la fuente del cambio no es el desencadenador o si la ejecución de una canalización se inició manualmente, el cambio utilizado será la confirmación de HEAD desde la ramificación predeterminada.

    Elija Siguiente.

  9. En la página Paso 4: Añadir una fase de compilación, elija Otros proveedores de compilación ECRBuildAndPublish.

    Agregue una acción de compilación de Amazon ECR a la canalización.
    1. En Nombre del repositorio de ECR, elija su repositorio de imágenes.

    2. Elija Siguiente.

  10. En Paso 5: agregación de la etapa de prueba, elija Omitir la etapa de prueba y, a continuación, acepte el mensaje de advertencia eligiendo Omitir una vez más.

    Elija Siguiente.

  11. En la página Paso 6: agregación de la etapa de implementación, elija Omitir etapa de implementación. Agregará la acción de ECS en el paso siguiente.

  12. En la página Paso 7: Revisar, revisa la configuración de la canalización y selecciona Crear canalización para crear la canalización.

  13. Edite su canalización para agregar la acción de implementación de Amazon ECS a la canalización:

    1. En la parte superior derecha, elija Edit (Editar).

    2. En la parte inferior del diagrama, seleccione + Add stage (Añadir etapa). En Nombre de la etapa, escriba un nombre; por ejemplo, Deploy.

    3. Elija + Add action group (Añadir grupo de acciones).

    4. En Nombre de la acción, escriba un nombre.

    5. En Proveedor de acción, elija Amazon ECS. En el campo Region (Región) conserve el valor predeterminado de la región de la canalización.

    6. En Artefactos de entrada, elija el artefacto de entrada de la etapa de origen, como SourceArtifact.

    7. En Nombre del clúster, elija el clúster de en el que se ejecuta el servicio.

    8. En Nombre de servicio, elija el servicio que desea actualizar.

    9. Seleccione Save.

    10. En la etapa que está editando, elija Done (Listo). En el panel de AWS CodePipeline , elija Save (Guardar) y, a continuación, elija Save (Guardar) cuando aparezca el mensaje de advertencia.

    11. Para enviar los cambios y comenzar una compilación de canalización, seleccione Publicar modificación y, a continuación, Publicar.

  14. Una vez ejecutada la canalización, consulte la estructura y el estado de la canalización.

    Diagrama de consola donde se muestra la ejecución correcta de una canalización con la acción de compilación de Amazon ECR y la acción de implementación de Amazon ECS agregadas a la misma
  15. Cuando la canalización se haya ejecutado correctamente, elija Ver detalles para consultar los registros de la acción y ver la salida de la acción de computación administrada.

    Consulte los registros de la acción de compilación de Amazon ECR en su canalización.
  16. Solucione los problemas de cualquier acción fallida. Por ejemplo, la acción de implementación de ECS puede fallar si el archivo imagedefinitions.json no está en el repositorio de código fuente. A continuación, se muestra un ejemplo del mensaje de error que aparece cuando falta el archivo imagedefinitions.json.

    Consulte los registros de la acción de compilación de Amazon ECR en su canalización.

Paso 4: Probar la canalización

Tu canalización debe tener todo lo necesario para ejecutar una implementación AWS continua end-to-end nativa. Ahora, pruebe su funcionalidad enviando un cambio de código al repositorio de código fuente.

Para probar la canalización
  1. Realice una modificación del código en el repositorio de código fuente configurado, valide y envíe el cambio.

  2. Abra la CodePipeline consola en https://console.aws.amazon.com/codepipeline/.

  3. Seleccione su canalización de la lista.

  4. Vea el progreso en la canalización a través de sus etapas. Su canalización debería completarse y su acción insertar la imagen de Docker en ECR que se creó a partir de la modificación del código.