Planificación de una compilación

Antes de empezar a crear imágenes con IBM Cloud® Code Engine, conozca las distintas opciones que tiene para su compilación.

Una compilación o una compilación de imagen es un mecanismo que puede utilizar para crear una imagen de contenedor a partir del código fuente. Code Engine permite compilar desde un archivo Docker y desde Cloud Native Buildpacks.

Si tiene una imagen creada que existe en un registro de contenedores y la imagen se creó con un procesador no basado en Intel, Code Engine no puede ejecutar su imagen de contenedor. Code Engine utiliza procesamiento basado en Intel. Puede crear su propia imagen si utiliza el procesamiento Intel (procesador x86 ). También puede dejar que Code Engine se encargue del proceso de creación.

Code Engine proporciona métodos de definición de recursos personalizados (CRD - Custom Resource Definition). Para más información, consulte Métodos CRD de origen a imagen.

Prepare la ubicación de origen

Para dar acceso a Code Engine al código fuente, debe estar disponible en un repositorio de Git o en una ubicación accesible en la estación de trabajo local.

Repositorio Git
Almacene su código en un repositorio Git, por ejemplo en GitHub o en GitLab. El código puede estar en el nivel superior del repositorio o en un subdirectorio. Si el repositorio de origen no es público, debe añadir acceso a Code Engine.
Estación de trabajo local
Almacene el código en la estación de trabajo local. Cuando envía una compilación que extrae código de un directorio local, el código fuente se empaqueta en un archivo de archivado y se carga en la instancia de IBM Cloud Container Registry. La imagen de origen se crea en el mismo espacio de nombres que la imagen de compilación. Tenga en cuenta que solo puede especificar IBM Cloud Container Registry como destino para las compilaciones locales. Puede elegir ignorar determinados patrones de archivo del código fuente utilizando el archivo .ceignore, que se comporta de forma similar a un archivo .gitignore. Por ejemplo, las entradas de un archivo .ceignore para una aplicación node.js pueden incluir node_modules y .npm. Para más ejemplos de patrones de archivos a ignorar, consulte el repositorio GitHub.gitignore.

Elección de una estrategia de compilación

Code Engine puede crear la imagen de contenedor utilizando una de las estrategias siguientes.

Dockerfile

Dockerfile que utiliza la herramienta BuildKit herramienta. Para utilizar esta estrategia, añada un Dockerfile al repositorio de origen. Este Dockerfile describe los pasos necesarios para crear una imagen de contenedor desde el repositorio de origen. El Dockerfile puede contener pasos que copien archivos estáticos de los orígenes en el contenedor que se va a alojar mediante un servicio web, por ejemplo. Puede compilar el código fuente escrito en el lenguaje que elija y añadir el binario resultante a la imagen del contenedor. Para obtener más información acerca de las compilaciones de Dockerfile, consulte Cómo escribir un Dockerfile para Code Engine.

Cuando extraiga una imagen de Docker Hub para utilizarla con aplicaciones o trabajos en Code Engine, tenga en cuenta los límites de tarifa de Docker para usuarios del plan gratuito (no autenticados). Es posible que detecte limitaciones de extracción si recibe un error 429 que le indica que ha alcanzado el límite de velocidad de extracción. Para aumentar los límites de tarifa, puede actualizar su cuenta a una suscripción Docker Pro o Team.

Cloud Native Buildpacks

Cloud Native Buildpack que utiliza Paketo para inspeccionar tu repositorio de fuentes y detectar en qué entorno de ejecución se basa tu código y cómo se construye una imagen de contenedor a partir de tus fuentes. Los paquetes de compilación realizan ciertos supuestos sobre la estructura de directorio de sus repositorios de origen. Para obtener más información sobre cómo estructurar correctamente el repositorio de origen, consulte los ejemplos que se suministran para su tiempo de ejecución.

Archivos de ejemplo de tiempo de ejecución
Tiempo de ejecución Versión Ejemplos
Go 1.24.12 Toma muestras.
Java 21.0.10 Java muestras.
Node.js 24.14.0 Node.js muestras.
PHP 8.1.28 Muestras PHP.
Python 3.11.14 Python muestras.
Ruby 3.1.7 Ruby muestras.
.NET Core 9.0.311 (.NET Core SDK),
9.0.13 (.NET Core Runtime)
.NET Core muestras.

Las imágenes creadas con Cloud Native Buildpacks ya no utilizan la marca de tiempo neutra de Jan, 1st 1980 como marca de tiempo de creación de la imagen. La fecha y hora de la fuente de entrada se utiliza como fecha y hora de creación de la imagen; por ejemplo, la fecha y hora de la confirmación de Git que se utilizó para la compilación.

La versión de un tiempo de ejecución específico para un paquete de compilación de Paketo puede diferir entre regiones durante un breve periodo de tiempo cuando se distribuye una versión actualizada de un paquete de compilación a las distintas regiones de IBM Cloud.

Determinación del tamaño de la compilación

Code Engine clasifica las construcciones en small, medium, large, xlarge, y xxlarge tamaño. El tamaño de la compilación define cómo se asignan los núcleos de CPU, la memoria y el espacio de disco a la compilación. Una compilación más pequeña es menos costosa, pero normalmente también es más lenta porque utiliza menos núcleos de CPU. Además, los requisitos de memoria y de disco de la compilación pueden hacer que la compilación falle con un tamaño menor.

Valores de tamaños de compilación.
Tamaño Dockerfile Paquetes de compilación
small
  • CPU 0,5
  • Memoria 2 GB
  • Disco 2 GB
  • CPU 0,5
  • Memoria 2 GB
  • Disco 2 GB
medium
  • CPU 1
  • Memoria 4 GB
  • Disco 4 GB
  • CPU 1
  • Memoria 4 GB
  • Disco 4 GB
large
  • CPU 2
  • Memoria 8 GB
  • Disco 8 GB
  • CPU 2
  • Memoria 8 GB
  • Disco 8 GB
xlarge
  • CPU 4
  • Memoria 16 GB
  • Disco 16 GB
  • CPU 4
  • Memoria 16 GB
  • Disco 16 GB
xxlarge
  • CPU 12
  • Memoria 48 GB
  • Disco 48 GB
  • CPU 12
  • Memoria 48 GB
  • Disco 48 GB

Si no está seguro sobre qué tamaño elegir, puede comenzar por el tamaño small o medium. Si la compilación falla debido a la falta de memoria o de espacio de disco, o no es lo suficientemente rápida, cambie a un tamaño mayor.

Selección del registro de imágenes de contenedor

Code Engine extrae el código fuente de un repositorio de Git o de un directorio local, lo compila y, a continuación, envía (carga) la imagen a un registro de imágenes de contenedor.

Puede utilizar repositorios para el código fuente y registros para la imagen de contenedor que sean públicos o privados. También puede optar por especificar los detalles del registro con un secreto de registro para su salida de compilación, o puede elegir que Code Engine se encargue de compilar la imagen por usted desde su fuente y almacenar la imagen en IBM Cloud Container Registry con acceso automático.

Elija su método de construcción

En las siguientes opciones de compilación, Code Engine extrae el código fuente de un repositorio Git o de un directorio local, compila la imagen del contenedor y, a continuación, empuja (carga) la imagen del contenedor a un registro. Puede elegir entre repositorios y registros públicos o privados. Si su registro es privado, especifique los detalles del registro con un secreto de registro para su salida de compilación con acceso proporcionado por el usuario. O bien, puede elegir que Code Engine cree un acceso para almacenar la imagen en IBM Cloud Container Registry para usted con acceso automático.

Crear configuraciones de compilación

En este escenario, Code Engine crear una configuración para su construcción.

La creación de una configuración de compilación no crea una imagen, sino que crea la configuración para compilar una imagen. Puede crear una imagen a partir de la configuración ejecutando la compilación. La configuración de compilación no se valida ni se utiliza para crear una imagen hasta que se ejecuta la compilación. La configuración de compilación permite varias compilaciones posteriores de una imagen, por ejemplo cuando se aplican cambios en el repositorio de origen.

Para obtener más información, consulte los temas siguientes.

Después de crear la configuración de compilación, puede ejecutarla.

Crear imagen de contenedor con comandos compilación independientes

Para obtener información sobre cómo compilar la imagen de contenedor con un único mandato de CLI de Code Engine y crear la imagen de contenedor sin crear una configuración de compilación reutilizable, consulte Compilación de una imagen de contenedor con mandatos de compilación autónomos (CLI).

Construya su código y cree su carga de trabajo

Cuando se crea una carga de trabajo a partir de código fuente local, el código fuente se empaqueta en un archivo de almacenamiento y se carga en un espacio de nombres gestionado dentro de la instancia IBM Cloud Container Registry de su cuenta. La imagen también se almacena en este mismo espacio de nombres.

Para construir su código y crear su carga de trabajo con una sola operación, consulte los siguientes temas.

Repositorio Git
Archivo local

Pasos siguientes para compilaciones

¿Desea ver más ejemplos de código? Consulte el repositorio de muestras de IBM Cloud Code Engine GitHub.