sql >> Base de Datos >  >> RDS >> Mysql

Spring Boot no puede conectarse a MySQL y sale en Docker/Docker compose

Estás pasando el DATABASE_HOST , DATABASE_PORT , DATABASE_NAME , DATABASE_USER y DATABASE_PASSWORD pero no lo estás usando dentro de tu aplicación.

Actualice sus propiedades de esta manera. (Mejor si crea un perfil para que su aplicación se ejecute fuera de la ventana acoplable)

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

Si realmente quieres usar localhost como su db_url . También puede usar network_mode: "service:[service name]" propiedad de docker componer. El único inconveniente es que esta propiedad no se puede usar con port propiedad.

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

Y su archivo de propiedades podría verse como

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