[英]How to set up Docker containers for Java Spring Boot and MySql
[英]Spring Boot + MySQL docker containers
我有兩個容器,一個帶有 Srping 應用程序,另一個帶有 mysql。 當我在本地計算機上運行 Spring 應用程序時,它成功連接到我在 docker 容器中運行的 MySQL 數據庫。 啟動 Spring 容器后,我收到連接錯誤,應用程序無法與 MySQL 容器通信。 如何配置 Spring 容器與 db 容器通信? 我試過創建一個橋接網絡無濟於事。 I believe my issue is spring.datasource.url=jdbc:mysql://localhost:3309/library
but when I try with the network id the jar fails to build spring.datasource.url=jdbc:mysql://lms-network/library
。 我一直在關注這個教程。 docker 圖像。
我們有幾種方法可以解決它。
將兩個容器放入 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 共享網絡。
當您在單獨的容器中運行 spring 引導應用程序和 mysql 時,您不能再從 localhost 引用 mysql 數據庫,因為 localhost 意味着指向您的容器。 由於 mysql 正在您的主機上運行,您可以在連接字符串中使用host.docker.internal而不是 localhost 來引用它。
所以你的連接字符串應該是
spring.datasource.url=jdbc:mysql://host.docker.internal:3309/library
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.