Stai passando il DATABASE_HOST
, DATABASE_PORT
, DATABASE_NAME
, DATABASE_USER
e DATABASE_PASSWORD
ma non lo stai utilizzando all'interno della tua app.
Aggiorna le tue proprietà in questo modo. (Meglio se crei un profilo in modo che l'app venga eseguita al di fuori della finestra mobile)
spring.datasource.url=jdbc:mysql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}
Se vuoi davvero usare localhost
come tuo db_url . Puoi anche usare network_mode: "service:[service name]"
proprietà di docker comporre. L'unico aspetto negativo è che questa proprietà non può essere utilizzata con port
proprietà.
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
E il tuo file delle proprietà potrebbe assomigliare a
spring.datasource.url=jdbc:mysql://localhost:3306/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}