Sie übergeben den DATABASE_HOST
, DATABASE_PORT
, DATABASE_NAME
, DATABASE_USER
und DATABASE_PASSWORD
aber Sie verwenden es nicht in Ihrer App.
Aktualisieren Sie Ihre Eigenschaften wie folgt. (Besser, wenn Sie ein Profil erstellen, damit Ihre App außerhalb von Docker läuft)
spring.datasource.url=jdbc:mysql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}
Wenn Sie wirklich localhost
verwenden möchten als Ihre db_url . Sie können auch network_mode: "service:[service name]"
verwenden Eigentum von docker compose. Der einzige Nachteil ist, dass diese Eigenschaft nicht mit port
verwendet werden kann Eigentum.
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
Und Ihre Eigenschaftendatei könnte so aussehen
spring.datasource.url=jdbc:mysql://localhost:3306/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}