Crear y enviar una imagen Docker con Cloud Build

Aprende a empezar a usar Cloud Build creando una imagen Docker y enviándola a Artifact Registry. Artifact Registry proporciona una única ubicación para gestionar paquetes privados e imágenes de contenedores Docker.

Primero, compilarás la imagen con un Dockerfile, que es el archivo de configuración de Docker, y, después, compilarás la misma imagen con el archivo de configuración de Cloud Build.


Para seguir las instrucciones paso a paso de esta tarea directamente en el editor de Cloud Shell, haz clic en Ayúdame:

Guíame


Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build, Compute Engine and Artifact Registry APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  7. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build, Compute Engine and Artifact Registry APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  13. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  14. Make sure that you have the following role or roles on the project: Artifact Registry Administrator, Cloud Build Editor, Logs Viewer, Service Account User, Service Usage Admin, Storage Bucket Viewer, Storage Object Creator

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Ir a IAM
    2. Selecciona el proyecto.
    3. Haz clic en Conceder acceso.
    4. En el campo Nuevos principales, introduce tu identificador de usuario. Normalmente, se trata de la dirección de correo de una cuenta de Google.

    5. En la lista Selecciona un rol, elige un rol.
    6. Para conceder más roles, haz clic en Añadir otro rol y añade cada rol adicional.
    7. Haz clic en Guardar.
    8. Preparar los archivos de origen para compilar

      Necesitarás un código fuente de ejemplo para empaquetarlo en una imagen de contenedor. En esta sección, crearás una secuencia de comandos shell y un Dockerfile. Un Dockerfile es un documento de texto que contiene instrucciones para que Docker cree una imagen.

      1. Abre una ventana de terminal.

      2. Crea un directorio llamado quickstart-docker y accede a él:

        mkdir quickstart-docker
        cd quickstart-docker
        
      3. Crea un archivo llamado quickstart.sh con el siguiente contenido:

        #!/bin/sh
        echo "Hello, world! The time is $(date)."
      4. Crea un archivo llamado Dockerfile con el siguiente contenido:

        FROM alpine
        COPY quickstart.sh /
        CMD ["/quickstart.sh"]
      5. En la ventana del terminal, ejecuta el siguiente comando para que quickstart.sh sea ejecutable:

        chmod +x quickstart.sh
        

      Crear un repositorio de Docker en Artifact Registry

      1. Crea un repositorio de Docker llamado quickstart-docker-repo en la ubicación us-west2 con la descripción "Repositorio de Docker":

        gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
            --location=us-west2 --description="Docker repository"
        
      2. Verifica que se ha creado el repositorio:

        gcloud artifacts repositories list
        

        Verás quickstart-docker-repo en la lista de repositorios mostrados.

      Compilar una imagen con Dockerfile

      Cloud Build te permite crear una imagen Docker mediante un Dockerfile. No necesitas un archivo de configuración de Cloud Build independiente.

      Para compilar con un Dockerfile, sigue estos pasos:

      1. Para obtener el ID de tu proyecto de Google Cloud , ejecuta el siguiente comando:

        gcloud config get-value project
        
      2. Ejecuta el siguiente comando desde el directorio que contiene quickstart.sh y Dockerfile:

        gcloud builds submit --region=us-west2 --tag us-west2-docker.pkg.dev/PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1
        

      Una vez completada la compilación, verás un resultado similar al siguiente:

      DONE
      ------------------------------------------------------------------------------------------------------------------------------------
      ID                                    CREATE_TIME                DURATION  SOURCE   IMAGES     STATUS
      545cb89c-f7a4-4652-8f63-579ac974be2e  2020-11-05T18:16:04+00:00  16S       gs://gcb-docs-project_cloudbuild/source/1604600163.528729-b70741b0f2d0449d8635aa22893258fe.tgz  us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1  SUCCESS
      

      Acabas de crear una imagen Docker llamada quickstart-image con un Dockerfile y la has enviado a Artifact Registry.

      Compilar una imagen con un archivo de configuración de compilación

      En esta sección, usarás un archivo de configuración de Cloud Build para crear la misma imagen Docker que antes. El archivo de configuración de compilación indica a Cloud Build que realice tareas según tus especificaciones.

      1. En el mismo directorio que contiene quickstart.sh y Dockerfile, crea un archivo llamado cloudbuild.yaml con el siguiente contenido. Este archivo es tu archivo de configuración de compilación. Durante la compilación, Cloud Build sustituye automáticamente $PROJECT_ID por el ID de tu proyecto.

        steps:
        - name: 'gcr.io/cloud-builders/docker'
          script: |
            docker build -t us-west2-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1 .
          automapSubstitutions: true
        images:
        - 'us-west2-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
      2. Para iniciar la compilación, ejecuta el siguiente comando:

        gcloud builds submit --region=us-west2 --config cloudbuild.yaml
        

      Cuando se complete la compilación, verás un resultado similar al siguiente:

      DONE
      ------------------------------------------------------------------------------------------------------------------------------------
      ID                                    CREATE_TIME                DURATION  SOURCE          IMAGES          STATUS
      046ddd31-3670-4771-9336-8919e7098b11  2020-11-05T18:24:02+00:00  15S       gs://gcb-docs-project_cloudbuild/source/1604600641.576884-8153be22c94d438aa86c78abf11403eb.tgz  us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1  SUCCESS
      

      Acabas de compilar quickstart-image con el archivo de configuración de la compilación y has enviado la imagen a Artifact Registry.

      Ver detalles de la compilación

      1. Abre la página Cloud Build en la Google Cloud consola.

        Abre la página Cloud Build.

      2. Si es necesario, selecciona el proyecto y haz clic en Abrir.

        Verás la página Historial de compilaciones:

        Captura de pantalla de la página del historial de compilaciones

      3. Si es necesario, selecciona us-west2 en el menú desplegable Región para ver las compilaciones de esa región.

        Se mostrarán dos compilaciones, una por cada una de las compilaciones que has ejecutado en esta guía de inicio rápido.

      4. Haz clic en una de las compilaciones.

        Verás la página Detalles de la compilación.

      5. Para ver los artefactos de tu compilación, en Resumen de la compilación, haz clic en Artefactos de la compilación.

        Verá un resultado similar al siguiente:

        Captura de pantalla de los artefactos de compilación

        En esta página, puede descargar el registro de compilación y ver los detalles de la imagen en Artifact Registry.

      Limpieza

      Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta página, sigue estos pasos.

      1. Abre la página Artifact Registry en la Google Cloud consola.

        Abre la página Artifact Registry

      2. Selecciona el proyecto y haz clic en Abrir.

      3. Selecciona quickstart-docker-repo.

      4. Haz clic en Eliminar.

      Ahora has eliminado el repositorio que has creado en esta guía de inicio rápido.

      Siguientes pasos