如何解決Docker連接本地MySQL服務(wù)失敗的問題
問題描述
在學(xué)習(xí) Docker 和 Go 時,遇到了一個連接 MySQL 數(shù)據(jù)庫失敗的問題。
具體情況如下:
使用以下命令運行 Docker 容器:
docker run --rm -p 8080:8080/tcp --env-file .env my-project:latest
.env
文件中的內(nèi)容如下:
DB_HOST=127.0.0.1 DB_USERNAME=root DB_NAME=mydbs DB_PASS=root123 AUTH_GEN_URL=https://api.learning.mydbs.id
在 Windows 上使用 Docker Desktop,報錯信息為:dial tcp 127.0.0.1:3306: connect: connection refused
。
這意味著在 IP 127.0.0.1
和端口 3306
上沒有數(shù)據(jù)庫服務(wù)在監(jiān)聽。
問題分析
在默認的網(wǎng)絡(luò)模式下,127.0.0.1
指的是容器內(nèi)部的地址,而不是主機的地址。
因此,當(dāng)容器嘗試連接 127.0.0.1:3306
時,它實際上是在連接容器自身的 3306
端口,而不是主機上的 MySQL 服務(wù)。
解決方法
對于 Windows 和 Mac 用戶
在 Windows 和 Mac 上,可以使用 host.docker.internal
來代替 127.0.0.1
。
這樣可以確保容器內(nèi)部的服務(wù)正確連接到運行在主機上的 MySQL 實例。
修改后的 .env
文件如下:
DB_HOST=host.docker.internal DB_USERNAME=root DB_NAME=mydbs DB_PASS=root123 AUTH_GEN_URL=https://api.learning.mydbs.id
這樣修改后,再次運行 Docker 容器,問題應(yīng)能得到解決。
對于 Linux 用戶
在 Linux 上,解決這個問題更加簡單,只需要在運行 Docker 容器時添加 --network="host"
參數(shù)即可。
這樣,容器將直接使用主機的網(wǎng)絡(luò),127.0.0.1
將指向主機自身。
命令如下:
docker run --rm --network="host" --env-file .env my-project:latest
總結(jié)
以上是解決 Docker 連接本地 MySQL 服務(wù)失敗問題的詳細步驟。在不同操作系統(tǒng)上,解決方法有所不同:
- Windows 和 Mac 用戶可以使用
host.docker.internal
。 - Linux 用戶可以使用
--network="host"
參數(shù)。
通過以上步驟,相信你已經(jīng)能夠成功解決 Docker 容器中無法連接本地 MySQL 數(shù)據(jù)庫的問題。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
以示例講解Clickhouse Docker集群部署以及配置
這篇文章主要介紹了Clickhouse Docker集群部署及配置,示例講解的非常詳細,希望可以幫助到有需要的小伙伴2021-08-08使用Docker安裝和配置 MySQL 數(shù)據(jù)庫的過程詳解
本文將介紹如何使用Docker來安裝和配置MySQL數(shù)據(jù)庫,以便在開發(fā)和測試環(huán)境中快速搭建MySQL實例,本文也是介紹兩種方式進行分別是“使用鏡像安裝”、“使用Docker Compose安裝”,感興趣的朋友一起看看吧2023-12-12基于Docker部署Dubbo+Nacos服務(wù)的過程
這篇文章主要介紹了基于Docker部署Dubbo+Nacos服務(wù),本文介紹基于?Docker?部署一套?Dubbo?+?Nacos?的微服務(wù)環(huán)境,并解決容器里的?IP?及端口的訪問問題,需要的朋友可以參考下2023-02-02基于Docker+Jenkins實現(xiàn)自動化部署的方法
這篇文章主要介紹了基于Docker+Jenkins實現(xiàn)自動化部署,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07docker部署RustDesk自建服務(wù)器的小結(jié)
本文詳細介紹了如何使用Docker部署RustDesk自建服務(wù)器,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-12-12Docker 搭建私有倉庫(registry、harbor)
這篇文章主要介紹了Docker 搭建私有倉庫(registry、harbor),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06Docker基礎(chǔ)教程之Dockerfile語法詳解
這篇文章主要給大家介紹了關(guān)于Docker基礎(chǔ)教程之Dockerfile語法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Docker具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07