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.ceignorepara una aplicación node.js pueden incluirnode_modulesy.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.
| 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.
| Tamaño | Dockerfile | Paquetes de compilación |
|---|---|---|
small |
|
|
medium |
|
|
large |
|
|
xlarge |
|
|
xxlarge |
|
|
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.
- Cree una configuración de compilación que extraiga el código fuente del repositorio público.
- Cree una configuración de compilación que extraiga el código fuente del repositorio privado.
- Cree una configuración de compilación que extraiga el código fuente de un directorio local.
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.