springboot整合mysql5.7_每天五分钟写K8(四):SpringBoot与mysql整合
在第一節(jié)中我們創(chuàng)建了mysql的Service,上一節(jié)我們運(yùn)行了Spring-boot的項(xiàng)目。這一節(jié)我們將兩個(gè)項(xiàng)目結(jié)合起來,讓spring-boot訪問mysql服務(wù)。
一、給Spring-boot項(xiàng)目的Deployment添加環(huán)境變量
Kubernetes運(yùn)行著大量的Service,那么必然需要服務(wù)發(fā)現(xiàn)機(jī)制。由于一個(gè)Service的Cluster IP不會(huì)發(fā)生改變,那么Kubenetes就使用了環(huán)境變量來解決了這個(gè)問題。使用時(shí)將要使用的服務(wù)添加到環(huán)境變量即可。在上節(jié)的yaml文件中修改spec.template.spec.containers項(xiàng)即可。
containers:- name: springboot-demoimage: k8s-boot:2.0imagePullPolicy: Neverports:- containerPort: 8080env:-?name:MYSQL_SERVICE_HOSTvalue: 'mysql'- name: MYSQL_SERVICE_PORTvalue: '3306'
二、準(zhǔn)備可訪問數(shù)據(jù)的Spring-boot項(xiàng)目
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://${MYSQL_SERVICE_HOST:localhost}:${MYSQL_SERVICE_PORT:3306}/test?useUnicode=true&characterEncoding=utf-8username: rootpassword: 123456
三、按上節(jié)部署方式進(jìn)行部署
上傳鏡像是一個(gè)比較繁瑣的工作,我提供了上傳到指定主機(jī)的腳本image_deploy.py在github上。
部署完成后在瀏覽器中測試:http://:30000/user/findAll。最終會(huì)返回以下錯(cuò)誤:
java.sql.SQLSyntaxErrorException: Unknown database 'test'
這是因?yàn)槲覀兊臄?shù)據(jù)庫服務(wù)尚未進(jìn)行正確的初始化。
四、初始化數(shù)據(jù)庫
初始化數(shù)據(jù)庫有很多種方式,例如:
暴露Service的NodePort,然后用圖形化客戶端連接,執(zhí)行SQL語句
在Pod中運(yùn)行mysql客戶端,執(zhí)行SQL語句
借助ConfigMap,啟動(dòng)Pod時(shí)獲取初始化SQL語句并執(zhí)行
第一種咱們已經(jīng)接觸過了,第三種尚未學(xué)習(xí)。今天我們就采用第二種初始化。
第一步要獲取mysql?pod的名稱:
$?kubectl?get?pod??-l?app=mysqlNAME READY STATUS RESTARTS AGEmysql-qkfcd 1/1 Running 0 4d22h
第二步進(jìn)入容器:
$ kubectl?exec?-it?mysql-qkfcd?/bin/bashroot@mysql-qkfcd:/#
第三步連接mysql服務(wù),執(zhí)行SQL
root@mysql-qkfcd:/$?mysql?-uroot?-pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 18Server version: 8.0.17 MySQL Community Server - GPLCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database test;Query OK, 1 row affected (0.00 sec)mysql> use test;Database changedmysql> CREATE TABLE `user` (-> `id` int(11) NOT NULL AUTO_INCREMENT,-> `user_name` varchar(45) NOT NULL,-> `password` varchar(45) NOT NULL,-> PRIMARY KEY (`id`)-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> exit
最后退出即可。
代碼下載:
https://github.com/loveoobaby/blog_code
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的springboot整合mysql5.7_每天五分钟写K8(四):SpringBoot与mysql整合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 密码破解工具怎么用 使用密码破解工具的方
- 下一篇: u盘修改名字怎么改 如何修改U盘的名称?