sql >> Databasteknik >  >> RDS >> Mysql

Spring Boot kan inte ansluta till MySQLand-utgångar i Docker/Docker compose

Du skickar DATABASE_HOST , DATABASE_PORT , DATABASE_NAME , DATABASE_USER och DATABASE_PASSWORD men du använder det inte i din app.

Uppdatera dina egenskaper så här. (Bättre om du skapar en profil så att din app körs utanför docker)

spring.datasource.url=jdbc:mysql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}

Om du verkligen vill använda localhost som din db_url . Du kan också använda network_mode: "service:[service name]" dockar compose egendom. Enda nackdelen är att den här egenskapen inte kan användas med port egendom.

version: '3'

services: 
  docker-mysql:
    image: mysql:latest
    network_mode: "service:spring-boot-jpa-docker-webapp"
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_PASSWORD=root
  spring-boot-jpa-docker-webapp:
    image: springboot_docker
    depends_on:
      - docker-mysql
    ports:
      - 8080:8080
      - 3306 #Add this only if you want to expose the mysql to outer world.
    environment:
      - DATABASE_USER=root
      - DATABASE_PASSWORD=root
      - DATABASE_NAME=test

Och din egenskapsfil kan se ut

spring.datasource.url=jdbc:mysql://localhost:3306/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}


  1. FLOOR() Funktion i Oracle

  2. Hur kan jag gå igenom en MySQL-resultatuppsättning mer än en gång med hjälp av mysql_*-funktionerna?

  3. KeyCloak User Federation OCH DYNAMISKA ROLLER

  4. Applikationen fryser när databasen anropas