簡體   English   中英

Spring 引導 + MySQL docker 容器

[英]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

將兩個容器放入 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 共享網絡。

使用主機.docker.internal

當您在單獨的容器中運行 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM