Categories
Base Datos Base de Conocimiento Cloud Run Cloud Sql Google Java MySql Spring Spring Boot

Desplegar Spring Boot en Google Cloud Run

Partimos del echo que tenemos un proyecto ya realizado con Spring Boot, para esto comenzamos a realizar lo siguiente.

  • Modificación del archivo pom.xml
  • Se agrega un archivo Dockerfile en mi caso particular con la siguiente configuración
# Use the official maven/Java 8 image to create a build artifact.
# https://hub.docker.com/_/maven
FROM maven:3.5-jdk-8-alpine as builder

# Copy local code to the container image.
WORKDIR /app
COPY pom.xml .
COPY src ./src

# Build a release artifact.
RUN mvn package -DskipTests

# Use AdoptOpenJDK for base image.
# It's important to use OpenJDK 8u191 or above that has container support enabled.
# https://hub.docker.com/r/adoptopenjdk/openjdk8
# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
FROM adoptopenjdk/openjdk8:jdk8u202-b08-alpine-slim
ENV PORT=8080
# Copy the jar to the production image from the builder stage.
COPY --from=builder /app/target/usuario-service-*.jar /usuario-service.jar

# Run the web service on container startup.
CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/usuario-service.jar"]
  • Luego se modifica el archivo application.properties para configurar el acceso a la base de datos en Google Cloud Sql
  • Para saber la instance-connection-name ir a donde dice Nombre de la conexión
  • Tener instalado el SDK de Google para realizar la creación de la maquina que se subirá al servidor.
gcloud builds submit --tag gcr.io/PROYECTO_ID/usuario-service
  • Luego desplegamos el servidor al repositorio de google
gcloud run deploy --image gcr.io/PROYECTO_ID/usuario-service --platform managed
  • Si nos da un error de memoria como
  • Ir a la siguiente configuración para realizar el ajuste de memoria
  • Habilitar permisos para que se pueda conectar a la base de datos desde Cloud Run
  • Habilitar el siguiente componente