Docker啟動(dòng)Nacos報(bào)錯(cuò):No DataSource set問題及解決
問題
筆者使用 docker-compose 構(gòu)建的 Nacos 容器,每當(dāng)重啟 Docker 引擎后啟動(dòng) Nacos 報(bào)錯(cuò):No DataSource set,且筆者相關(guān)的數(shù)據(jù)源配置是沒有問題的。
筆者相關(guān)環(huán)境及軟件信息如下:
- 操作系統(tǒng):Apple M1 Pro 版本 12.6.3
- Nacos:v2.2.2-slim
- MySQL:8.0.32
Caused by: com.alibaba.nacos.api.exception.NacosException: Nacos Server did not start because dumpservice bean construction failure :
No DataSource set

解決方案一(正規(guī))
容器構(gòu)建的服務(wù)中,可以使用容器名指定某個(gè)容器服務(wù),因此可以修改為:
db.url.0=jdbc:mysql://<container_name>:<port>/mdb
其中 <container_name> 為容器名稱,而不是用具體 IP;
<port> 要使用容器內(nèi)端口號(hào),而不是映射的宿主機(jī)端口號(hào),如端口映射為:"3307:3306",應(yīng)該填寫 3306,而不是 3307。
解決方案二
在 JDBC 驅(qū)動(dòng)程序中要使用網(wǎng)卡的 IP。
如:
db.url.0=jdbc:mysql://192.168.0.120:3306/mdb
否則 Nacos 將無法找到對(duì)應(yīng)的驅(qū)動(dòng)鏈接。
解決方案三
在 JDBC 驅(qū)動(dòng)程序中添加上參數(shù) ?
&allowPublicKeyRetrieval=true
就可以正常啟動(dòng)。
db.url.0=jdbc:mysql://127.0.0.1:3306/mdb?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
原因
在 MySQL JDBC 驅(qū)動(dòng)程序的 8.0.22 版本之前,如果服務(wù)器的公鑰未明確信任或者密鑰檢索失敗,連接可能會(huì)失敗。通過在連接字符串中設(shè)置"&allowPublicKeyRetrieval=true",可以指示驅(qū)動(dòng)程序允許檢索公鑰,即使它未明確信任。
"&allowPublicKeyRetrieval=true"是 MySQL JDBC 驅(qū)動(dòng)程序中的一個(gè)參數(shù),用于在連接字符串中允許在與 MySQL 服務(wù)器進(jìn)行 SSL/TLS 加密握手期間檢索公鑰。該參數(shù)在連接到需要 SSL/TLS 加密以實(shí)現(xiàn)安全通信的 MySQL 服務(wù)器時(shí)是相關(guān)的。
然而,從 MySQL JDBC 驅(qū)動(dòng)程序版本 8.0.22 開始,默認(rèn)情況下"allowPublicKeyRetrieval"的值已更改為"true"。因此,在大多數(shù)情況下,您可能不需要顯式指定此參數(shù),除非使用較舊的驅(qū)動(dòng)程序版本或希望在配置中明確指定。
使用 MySQL 的 SSL/TLS 加密提供了額外的安全性,通過加密在客戶端和服務(wù)器之間傳輸?shù)臄?shù)據(jù)。如果 MySQL 服務(wù)器已配置為使用 SSL/TLS,請(qǐng)?jiān)?JDBC 連接中啟用 SSL 以確保安全通信。

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker已啟動(dòng)容器修改添加端口映射的兩種方法
最近工作中遇到一個(gè)問題,docker容器啟動(dòng)后怎么修改端口映射?通過查找相關(guān)資料解決了,這篇文章主要給大家介紹了關(guān)于docker已啟動(dòng)容器修改添加端口映射的兩種方法,需要的朋友可以參考下2022-08-08
docker: invalid reference format.問題
這篇文章主要介紹了docker: invalid reference format.問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
docker官方鏡像下載及使用Dockerfile創(chuàng)建鏡像的方法
這篇文章主要介紹了docker官方鏡像下載及使用Dockerfile創(chuàng)建鏡像的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02

