Acerca de este codelab
1. Antes de comenzar
Cloud SQL es un servicio de bases de datos completamente administrado que facilita la configuración, el mantenimiento y la administración de sus bases de datos relacionales en Google Cloud. Puedes usar Cloud SQL con Cloud SQL para MySQL o Cloud SQL para PostgreSQL.
En este codelab, aprenderás a configurar una instancia de Cloud SQL para MySQL y luego a actualizar una app de Spring Boot para usar la instancia de Cloud SQL como almacenamiento de backend. Spring Boot Starter para Google Cloud SQL proporciona un DataSource configurado automáticamente, lo que te permite aprovechar fácilmente Cloud SQL con cambios mínimos en tu código. En este codelab, se usa el código fuente de Spring Petclinic.
Requisitos previos
- Estar familiarizado con el lenguaje y las herramientas de programación de Java
- Conocimientos de editores de texto estándares de Linux, como Vim, Emacs y nano
Actividades
- Usa Cloud SQL en tu app de Spring Boot.
Requisitos
- Un proyecto de Google Cloud
- Un navegador, como Google Chrome o Firefox
2. Configuración y requisitos
Configuración del entorno a su propio ritmo
- Accede a Cloud Console y crea un proyecto nuevo o reutiliza uno existente. (Si no tienes una cuenta de Gmail o G Suite, debes crear una).
Recuerde el ID de proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se encuentra en uso y no lo podrá usar). Se mencionará más adelante en este codelab como PROJECT_ID
.
- A continuación, debes habilitar la facturación en Cloud Console para usar los recursos de Google Cloud.
Ejecutar este codelab no debería costar más que unos pocos dólares, pero podría ser más si decides usar más recursos o si los dejas en ejecución.
Los usuarios nuevos de Google Cloud son aptos para obtener una prueba gratuita de USD 300.
Activar Cloud Shell
- En Cloud Console, haz clic en Activar Cloud Shell
.
Si nunca ha iniciado Cloud Shell, aparecerá una pantalla intermedia (debajo de la mitad inferior de la página) que describe qué es. Si ese es el caso, haz clic en Continuar (y no volverás a verlo). Así es como se ve la pantalla única:
El aprovisionamiento y la conexión a Cloud Shell solo tomará unos minutos.
Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Gran parte de tu trabajo en este codelab, si no todo, se puede hacer simplemente con un navegador o tu Chromebook.
Una vez conectado a Cloud Shell, debería ver que ya se autenticó y que el proyecto ya se configuró con tu ID del proyecto.
- En Cloud Shell, ejecuta el siguiente comando para confirmar que está autenticado:
gcloud auth list
Resultado del comando
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
Resultado del comando
[core] project = <PROJECT_ID>
De lo contrario, puede configurarlo con este comando:
gcloud config set project <PROJECT_ID>
Resultado del comando
Updated property [core/project].
3. Configura una instancia de Cloud SQL para MySQL
- Después de que se inicie Cloud Shell, podrá usar la línea de comandos para crear una nueva instancia de Cloud SQL:
$ gcloud sql instances create my-instance
Una vez que se complete esta operación, tu instancia estará lista para usar.
- Ahora, cree una base de datos que usará para la aplicación Petclinic:
$ gcloud sql databases create petclinic --instance my-instance
También puedes acceder a la instancia y configurarla a través de Cloud Console.
- Obtén el nombre de la conexión de la instancia en el formato
project-id:zone-id:instance-id
mediante la ejecución del comando siguiente. La usarás más adelante en la configuración de la app de Spring Boot.
$ gcloud sql instances describe my-instance |grep connectionName
4. Clona y prueba la app de Petclinic de manera local
- Ahora clonará y probará la aplicación Petclinic de manera local.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- En Cloud Shell, haga clic en Vista previa en la Web
y, luego, seleccione Vista previa en el puerto 8080.
Debería ver la página principal de Petclinic como se muestra aquí en su navegador:
- Juega y agrega datos. La app usa una base de datos HyperSQL en la memoria. Ahora cambiará de HyperSQL a Cloud SQL como base de datos.
5. Use Cloud SQL en Petclinic
Actualice el archivo pom.
Actualiza el archivo pom.xml
como se muestra aquí. El activador proporciona un objeto DataSource
configurado automáticamente para conectarse a tu base de datos de Cloud SQL. Puede usar Vim, nano o Emacs para editar el archivo.
pom.xml;
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
...
<!-- Add Spring Cloud GCP Dependency BOM -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.0.0.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
...
<!-- Add CloudSQL Starter for MySQL -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
</dependency>
...
</dependencies>
<repositories>
<!-- Use Spring Milestone Repository -->
<repository>
<id>repository.spring.milestone</id>
<name>Spring Milestones Repository</name>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
</project>
Actualiza application-mysql.properties
- Reemplaza el contenido de
src/main/resources/application-mysql.properties
por las siguientes propiedades. Debes establecer el nombre de la conexión de la instancia del paso anterior.
src/main/resources/application-mysql.properties
database=mysql
# Delete the rest of the original content of the file and replace with the following:
spring.cloud.gcp.sql.database-name=petclinic
spring.cloud.gcp.sql.instance-connection-name=YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME
# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.
spring.datasource.initialization-mode=always
- Por último, agrega un
mysql
a la propiedadapplication.properties' spring.profiles.active
para habilitar un perfil de Cloud SQL para MySQL en la app de Spring Boot:
src/main/resources/application.properties
# Keep the content of the file the same
...
# In the last line, add mysql to the spring.profiles.active property
spring.profiles.active=mysql
6. Ejecuta la app en Cloud Shell
- Puedes iniciar la app de Spring Boot normalmente con el complemento de Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- Cuando se inicie la app, haz clic en Vista previa en la Web
en la barra de herramientas de Cloud Shell y selecciona Vista previa en el puerto 8080.
Debería ver la página principal de Spring Petclinic nuevamente como se muestra aquí en su navegador:
- Agrega una entrada de propietario de una mascota.
Opcional: Verifique que Cloud SQL haya conservado los datos
Puede verificar que los datos que ingresó se conservaron en Cloud SQL, como se muestra aquí. Presiona Intro (volver a Macintosh) cuando se te solicite una contraseña.
$ gcloud sql connect my-instance -u root Whitelisting your IP for incoming connection for 5 minutes...done. Enter password: <Press Enter, there is no password by default> ... mysql> use petclinic; mysql> select * from owners;
Opcional: Borra tu instancia de Cloud SQL
Una vez que detienes la app, puedes borrar la instancia de Cloud SQL a través del siguiente comando:
$ gcloud sql instances delete my-instance