我有兩個容器,一個帶有 Srping 應用程式,另一個帶有 mysql。當我在本地機器上運行 Spring 應用程式時,它成功連接到我在 docker 容器中運行的 MySQL 資料庫。啟動 Spring 容器后,出現連接錯誤,應用程式無法與 MySQL 容器通信。如何配置 Spring 容器與 db 容器通信?我試過創建橋接網路無濟于事。我相信我的問題是,spring.datasource.url=jdbc:mysql://localhost:3309/library但是當我嘗試使用網路 ID 時,jar 無法構建spring.datasource.url=jdbc:mysql://lms-network/library。我一直在關注這個教程。碼頭工人形象。
uj5u.com熱心網友回復:
我們有幾種方法可以解決它。
使用 docker-compose
將兩個容器都放在 docker-compose 檔案中。例子:
version: "3"
services:
spring-boot-service:
build:
context: .
ports:
- 8080:8080
environment:
DB_HOST: mysql-db
DB_NAME: library
DB_USER: <user>
DB_PASSWORD : <pwd>
mysql-db:
image: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_DATABASE: <db_name>
#... other properties
然后在 application.properties 中,使用連接字串作為:
spring.datasource.url=jdbc:mysql://${DB_HOST}:3306/${DB_NAME}
然后用于docker-compose up同時運行兩個容器。這樣他們將通過 docker-compose 共享網路。
使用 host.docker.internal
當您在單獨的容器中運行 Spring Boot 應用程式和 mysql 時,您不能再從 localhost 參考 mysql 資料庫,因為 localhost 意味著指向您的容器。由于 mysql 在您的主機上運行,??您可以通過在連接字串中使用host.docker.internal而不是 localhost來參考它。
所以你的連接字串應該是
spring.datasource.url=jdbc:mysql://host.docker.internal:3309/library
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372000.html
