Jib compila contenedores sin usar un Dockerfile o que requieren una instalación de Docker. Puedes usar Jib en los complementos de Jib para Maven o Gradle, o puedes usar la biblioteca Java de Jib.
¿Qué hace Jib?
Jib controla todos los pasos de empaquetado de tu aplicación en una imagen de contenedor. No necesitas conocer las prácticas recomendadas para crear Dockerfiles ni tener instalado Docker.
Flujo de compilación de Docker:
Flujo de compilación de Jib:
Jib organiza tu aplicación en distintas capas; dependencias, recursos y clases; y usa el almacenamiento en caché de la capa de imagen de Docker para mantener las compilaciones rápidas con solo volver a compilar los cambios. La organización de capas de Jib y la imagen base pequeña mantienen el tamaño general de la imagen, lo que mejora el rendimiento y la portabilidad.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Container Registry API.
- Si no tienes Java, debes descargarlo, instalarlo y configurarlo.
- Instala Maven 3.5 o una versión más reciente.
- Instala e inicializa la CLI de Google Cloud.
- Realiza la autenticación en Container Registry mediante Google Cloud CLI como auxiliar de credenciales de Docker:
gcloud auth configure-docker
De manera opcional, consulta la documentación de configuración de Jib para conocer otras formas de autenticación.
Compila con Jib
Selecciona un proyecto existente y navega a la carpeta de origen o clona la muestra con el siguiente comando:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/run/helloworld
Agrega el complemento a tu
pom.xml
:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>2.8.0</version> <configuration> <to> <image>gcr.io/PROJECT/IMAGE</image> </to> </configuration> </plugin>
Reemplazar
- PROJECT por el ID del proyecto de Google Cloud
- IMAGE con el nombre de tu imagen.
Si no deseas modificar tu
pom.xml
, puedes usar el siguiente comando:mvn compile com.google.cloud.tools:jib-maven-plugin:2.8.0:build \ -Dimage=gcr.io/PROJECT/IMAGE
Compila y envía la imagen a Container Registry:
mvn compile jib:build
Para verificar que se realizó de forma correcta, consulta tu contenedor en Google Container Registry.
De forma opcional, si tienes instalado Docker, puedes compilar tu instalación local de Docker para que pueda inspeccionar o ejecutar la imagen como cualquier otro contenedor local:
mvn compile jib:dockerBuild
Personalizaciones adicionales
Puedes personalizar tus compilaciones de Jib de manera similar a los Dockerfiles, como agregar variables de entorno y seleccionar una imagen base.
Agrega variables del entorno
Puedes agregar variables de entorno a tu compilación de manera similar a la instrucción ENV
en un Dockerfile, de la manera siguiente:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.8.0</version>
<configuration>
<to>
<image>gcr.io/PROJECT/IMAGE</image>
</to>
<container>
<environment>
<ENV_VAR>VALUE</ENV_VAR>
</environment>
</container>
</configuration>
</plugin>
Reemplazar
- PROJECT por el ID del proyecto de Google Cloud
- IMAGE con el nombre de tu imagen.
- ENV_VAR con
NAME
. - VALUE por el valor deseado.
Ahora tu aplicación responderá con Hello <var>VALUE</var>!
Cambiar la imagen base
La imagen base es equivalente a las instrucciones de FROM
en un Dockerfile. La imagen base se puede actualizar si cambias el campo from.image
.
Si deseas incluir un shell para la depuración, configura la imagen base en alpine:3
o openjdk:VERSION
(si se necesita Java).
Para agregar paquetes del sistema, tendrás que crear una imagen base con esos paquetes instalados. Consulta Crea contenedores para obtener más información.
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.8.0</version>
<configuration>
<from>
<image>gcr.io/PROJECT/BASE_IMAGE</image>
</from>
<to>
<image>gcr.io/PROJECT/IMAGE_NAME</image>
</to>
</configuration>
</plugin>
Intenta actualizar el campo from.image
a otra imagen base de Java, como openjdk:8-alpine
.
Personaliza otros aspectos de Java
Jib es compatible con las configuraciones de entorno de ejecución de Java que pueden ser necesarias para ejecutar tu aplicación. Para obtener más personalizaciones, consulta Uso extendido.
Envía el código
Configura los valores predeterminados de gcloud
A fin de configurar gcloud con los valores predeterminados para el servicio de Cloud Run, sigue estos pasos:
Configura el proyecto predeterminado:
gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID por el nombre del proyecto que creaste para este instructivo.
Configura gcloud en la región que elegiste:
gcloud config set run/region REGION
Reemplaza REGION por la región de Cloud Run compatible que prefieras.
Ubicaciones de Cloud Run
Cloud Run es regional, lo que significa que la infraestructura que ejecuta los servicios se ubica en una región específica, y Google la administra para que esté disponible de manera redundante en todas las zonas de esa región.
El cumplimiento de los requisitos de latencia, disponibilidad o durabilidad es el factor principal para seleccionar la región en la que se ejecutan los servicios de Cloud Run.
Por lo general, puedes seleccionar la región más cercana a los usuarios, pero debes considerar la ubicación de los otros productos de Google Cloud que usa el servicio de Cloud Run.
Si usas productos de Google Cloud en varias ubicaciones, la latencia y el costo del servicio pueden verse afectados.
Cloud Run está disponible en las siguientes regiones:
Sujetas a los Precios del nivel 1
asia-east1
(Taiwán)asia-northeast1
(Tokio)asia-northeast2
(Osaka)europe-north1
(Finlandia) Bajo nivel de CO2europe-west1
(Bélgica) Bajo nivel de CO2europe-west4
(Países Bajos)us-central1
(Iowa) Bajo nivel de CO2us-east1
(Carolina del Sur)us-east4
(Virginia del Norte)us-west1
(Oregón) Bajo nivel de CO2
Sujetas a los Precios del nivel 2
asia-east2
(Hong Kong)asia-northeast3
(Seúl, Corea del Sur)asia-southeast1
(Singapur)asia-southeast2
(Yakarta)asia-south1
(Bombay, India)asia-south2
Delhi (India)australia-southeast1
(Sídney)australia-southeast2
(Melbourne)europe-central2
(Varsovia, Polonia)europe-west2
(Londres, Reino Unido)europe-west3
(Fráncfort, Alemania)europe-west6
(Zúrich, Suiza) Bajo nivel de CO2northamerica-northeast1
(Montreal) Bajo nivel de CO2northamerica-northeast2
(Toronto) Bajo CO2southamerica-east1
(São Paulo, Brasil) Bajo nivel de CO2southamerica-west1
(Santiago, Chile)us-west2
(Los Ángeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Si ya creaste un servicio de Cloud Run, puedes ver la región en el panel de Cloud Run en Cloud Console.
Implementar en Cloud Run
Implementa tu contenedor de Container Registry mediante la CLI de gcloud
en Cloud Run o Cloud Run for Anthos.
Implementa la imagen del contenedor con el siguiente comando:
gcloud run deploy SERVICE-NAME \ --image gcr.io/PROJECT/IMAGE \ --platform managed
Reemplazar
- SERVICE-NAME por el nombre de servicio que elegiste.
- PROJECT por el ID del proyecto de Google Cloud
- IMAGE con el nombre de tu imagen.
Ten en cuenta que la imagen del contenedor se implementa en el servicio y la región (Cloud Run) o el clúster (Cloud Run for Anthos en Google Cloud) que configuraste antes en Configura gcloud.
Si se implementa en Cloud Run, se te pedirá que permitas invocaciones no autenticadas. Si deseas tener acceso inmediato a tu servicio, responde y
, “Sí” a la opción “Permitir sin autenticación”. Si tu servicio es privado y las solicitudes deben incluir la autenticación, responde n
, “No” al mensaje “Permitir no autenticado”.
Si tu servicio es público, usa la URL que se muestra después de una implementación exitosa para visitar el contenedor implementado. Si tu servicio es privado, usa el siguiente comando curl
para invocarlo:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
Si se implementa en Cloud Run for Anthos, consulta Accede a tu servicio implementado.
Limpia
Si creaste un proyecto nuevo para este instructivo, bórralo. Si usaste un proyecto existente y deseas conservarlo sin los cambios que se agregaron en este instructivo, borra los recursos creados para el instructivo.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, sigue estos pasos:
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Borra los recursos del instructivo
Usa este comando para borrar el servicio de Cloud Run que implementaste en este instructivo:
gcloud run services delete SERVICE-NAME
En el ejemplo anterior, SERVICE-NAME es el nombre del servicio que elegiste.
También puedes borrar los servicios de Cloud Run desde Google Cloud Console.
Quita la configuración de región predeterminada de gcloud que agregaste durante la configuración en el instructivo:
gcloud config unset run/region
Quita la configuración del proyecto:
gcloud config unset project
¿Qué sigue?
- Si deseas obtener más información sobre el contrato que deben cumplir tus contenedores para implementarse en Cloud Run, consulta Contrato de contenedores.
- Para automatizar las compilaciones y las implementaciones de tus servicios de Cloud Run con activadores de compilación de Cloud, configura la implementación continua.
- Para obtener más información sobre el uso y la personalización de Jib, consulta el repositorio de GitHub de Jib.