Cómo desplegar Micronaut en Cloud Run con docker


Realizamos los pasos para desplegar Micronaut en Cloud Run con un contenedor docker

Cómo desplegar Micronaut en Cloud Run con docker
oscar Escrito por oscar 30 May 2025 3 0

Realizamos los pasos para desplegar Micronaut en Cloud Run con un contenedor docker

Requisitos previos

Pasos para desplegar Micronaut en Cloud Run (GCP)

Crear una app Micronaut nueva

Podemos realizar por medio de https://micronaut.io/launch donde seleccionamos las siguientes configuraciones:

Damos en descargar y descomprimir el JAR

O podemos usar el comando de consola

mn create-app --build=maven --jdk=17 --lang=java --test=junit --features=http-client com.example.demo

Esto crea una app simple con controlador HTTP y Maven como gestor de build.

Crear un controlador REST (opcional si ya lo tienes)

Procedemos a crear un controlador para mostrar un mensaje al acceder a la URL, para ello puedes seguir los ejemplos de crear controladores.

En el paquete example.micronaut creamos la clase HelloController

package example.micronaut;

import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;

@Controller("/")
public class HelloController {
    @Get
    public String hello() {
        return "Hola desde Micronaut en Cloud Run!";
    }
}

Crear un archivo Dockerfile

Procedemos a crear el dockerfile en donde cargaremos la aplicación MN creada para empaquetarla en una imagen y que se ejecute en un contenedor desde el Artifact Registry

Procedemos a crear el Dockerfile y colocamos el siguiente código:

FROM eclipse-temurin:17-jdk as build
WORKDIR /app
COPY . .
RUN ./mvnw clean package

FROM eclipse-temurin:17-jre
EXPOSE 8080
COPY --from=build /app/target/cloudrun-0.1.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
  1. Definimos como imagen base un Java 17 JDK
  2. Indicamos el directorio de trabajo como /app
  3. Copiamos todo el contenido del proyecto al la imagen
  4. Realizamos el build de la aplicación
  5. Descargamos java jre 17
  6. Exponemos el puerto 8080 cuando inicie el contenedor
  7. Renombremos el jar generado a app.jar
  8. Dejamos los comandos para cuando inicie el contenedor

Probar localmente (opcional)

Procedemos a crear la imagen usando docker build de la siguiere forma:

docker build -t micronaut-cloudrun .

 Esto creara la imagen en local donde podemos hacer ejecutar un contenedor con esta imagen para probar su funcionamiento:

docker run -p 8080:8080 micronaut-cloudrun

Finalizando el docker run, abre: http://localhost:8080/

Crear Artifact Registry

Procedemos a crear el Artifact Directory, para poder subir la imagen Docker

Ejecutamos el siguiente comando, donde crea un repositorio de contenedores Docker en Artifact Registry dentro de Google Cloud Platform.

gcloud artifacts repositories create micronaut-repo --repository-format=docker --location=us-central1

Cuando ejecutas el comando:

Ahora ejecutamos el siguiente comando:

gcloud auth configure-docker us-central1-docker.pkg.dev

El comando anterior configura la autenticación entre Docker y el registro de artefactos de Google Cloud, específicamente Artifact Registry.

Modifica el archivo de configuración de Docker

Construir y subir imagen Docker

Procedemos a crear la imagen Docker final, en donde ejecutaremos el siguiente comando: (Reemplaza PROJECT-ID con tu ID real de GCP)

docker tag micronaut-cloudrun us-central1-docker.pkg.dev/PROJECT-ID/micronaut-repo/micronaut-cloudrun

 Liego subimos la imagen generada a repositorio creado anteriormente:

docker push us-central1-docker.pkg.dev/PROJECT-ID/micronaut-repo/micronaut-cloudrun

Desplegar en Cloud Run

Podemos desplegar la Cloud Run desde la consola CLI de GCP usando el siguiente comando:

gcloud run deploy micronaut-cloudrun --image us-central1-docker.pkg.dev/PROJECT-ID/micronaut-repo/micronaut-cloudrun --platform managed --region us-central1 --allow-unauthenticated

El comando anterior realiza lo siguiente:

Listar todos los servicios

gcloud run services list

Listar por región (recomendado)

gcloud run services list --region=us-central1

Cloud Run es regional, así que esto evita confusión.

Ejemplo de salida

SERVICE        REGION        URL
demo-service   us-central1   https://demo-service-xxxx.a.run.app

Verificar

Después del despliegue, GCP te dará una URL pública como:

https://micronaut-cloudrun-xyz.a.run.app

Visítala y deberías ver el mensaje "Hola desde Micronaut en Cloud Run!".

Consejos finales


Comentario

Debe aceptar antes de enviar