程式碼研究室簡介
1. 事前準備
Cloud SQL 是一項全代管資料庫服務,可讓您輕鬆在 Google Cloud 中設定、維護、維護及管理關聯資料庫。您可以將 Cloud SQL 與 MySQL 適用的 Cloud SQL 或 PostgreSQL 適用的 Cloud SQL 搭配使用。
在本程式碼研究室中,您將瞭解如何設定 MySQL 適用的 Cloud SQL 執行個體,然後更新 Spring Boot 應用程式,以使用 Cloud SQL 執行個體做為其後端儲存空間。Google Cloud SQL 的啟動入門提供自動設定的 DataSource,讓您可以輕鬆地使用 Cloud SQL,而且不用修改程式碼。本程式碼研究室使用 Spring Petclinic 原始碼。
事前準備
- 熟悉 Java 程式語言和工具
- 熟悉標準 Linux 文字編輯器,例如 Vim、Emacs 和 Nano
要執行的步驟
- 在 Spring Boot 應用程式中使用 Cloud SQL。
軟硬體需求
- Google Cloud 專案
- 瀏覽器,例如 Google Chrome 或 Firefox
2. 設定和相關規定
自行調整環境設定
- 登入 Cloud Console,建立新專案或重複使用現有專案。(如果您還沒有 Gmail 或 G Suite 帳戶,請先建立帳戶)。
提醒您,專案編號是所有 Google Cloud 專案的不重複名稱 (使用上述名稱後就無法使用,敬請見諒!)此程式碼研究室稍後將稱為 PROJECT_ID
。
- 接著,您必須在 Cloud Console 中啟用計費功能,才能使用 Google Cloud 資源。
完成這個程式碼研究室的成本應該不會超過新臺幣 $300 元,但如果您決定用到更多資源,或讓資源繼續運作,則可能需花費更多費用。
Google Cloud 新使用者可享有 $300 美元的免費試用期。
啟動 Cloud Shell
- 在 Cloud Console 中按一下 [啟用 Cloud Shell]
。
如果您之前從未啟動 Cloud Shell,系統會提供一個中繼畫面 (需捲動位置),說明其是什麼。如果是這種情況,請按一下繼續 (這樣就永遠不會再看到這個畫面)。這個一次性畫面的外觀如下:
佈建和連線至 Cloud Shell 只需要幾分鐘的時間。
這部虛擬機器已載入所有您需要的開發工具。這項服務提供永久性的 5GB 主目錄,可在 Google Cloud 中執行,大幅提升網路效能和驗證效能。透過這個程式碼研究室的大部分作業,只要用瀏覽器或 Chromebook 就能完成。
連線至 Cloud Shell 之後,您應該已經看到已通過驗證,且專案已設為專案 ID。
- 在 Cloud Shell 中執行下列指令,確認您的身分已通過驗證:
gcloud auth list
指令輸出
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
指令輸出
[core] project = <PROJECT_ID>
如果沒有,則可使用下列指令設定:
gcloud config set project <PROJECT_ID>
指令輸出
Updated property [core/project].
3. 設定 MySQL 適用的 Cloud SQL 執行個體
- Cloud Shell 啟動後,您可以使用指令列來建立新的 Cloud SQL 執行個體:
$ gcloud sql instances create my-instance
作業完成後,您的執行個體即可開始使用。
- 現在,建立要用於 Petclinic 應用程式的資料庫:
$ gcloud sql databases create petclinic --instance my-instance
您也可以透過 Cloud Console 存取及設定執行個體。
- 執行下列指令來取得執行個體連線名稱,格式為
project-id:zone-id:instance-id
。稍後您將在設定 Spring Boot 應用程式時使用。
$ gcloud sql instances describe my-instance |grep connectionName
4. 在本機上複製並測試 Petclinic 應用程式
- 現在您會在本機上複製並測試 Petclinic 應用程式。
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- 在 Cloud Shell 中按一下 [Web Preview] (網頁預覽)
,然後選取 [透過以下埠預覽:8080]。
瀏覽器應該會如下所示:
- 可四處探索及新增資料。這個應用程式使用記憶體內 HyperSQL 資料庫。您即將從 HyperSQL 改用 Cloud SQL 做為資料庫。
5. 在 Petclinic 中使用 Cloud SQL
更新 Maven pom.xml 檔案
更新 pom.xml
檔案,如下所示。啟動程式提供自動設定的 DataSource
物件,讓您連線至 Cloud SQL 資料庫。您可以使用 Vim、Nano 或 Emacs 編輯檔案。
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>
更新 application-mysql.properties
- 將
src/main/resources/application-mysql.properties
的內容替換為下列屬性。您必須設定前一個步驟的執行個體連線名稱。
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
- 最後,請將
mysql
新增至application.properties' spring.profiles.active
屬性,在 Spring Boot 應用程式中啟用 MySQL 適用的 Cloud SQL 設定檔:
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. 在 Cloud Shell 中執行應用程式
- 你可以透過一般方式透過 Spring Boot 外掛程式啟動 Spring Boot 應用程式:
$ ./mvnw -DskipTests spring-boot:run
- 應用程式啟動後,請按一下 Cloud Shell 工具列中的 [Web Preview] (網頁預覽)
,然後選取 [透過以下埠預覽:8080]。
這樣應該就會在瀏覽器中看見 Spring Petclinic 首頁:
- 新增寵物擁有者項目。
選用:確認 Cloud SQL 已保留資料
您可以驗證此處輸入的資料已保留至 Cloud SQL,如下所示。看到系統提示時,按下 Enter 鍵 (Macintosh 則返回)。
$ 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;
選用:刪除 Cloud SQL 執行個體
停止應用程式後,您可以使用下列指令刪除 Cloud SQL 執行個體:
$ gcloud sql instances delete my-instance