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}