Bạn đang chuyển DATABASE_HOST
, DATABASE_PORT
, DATABASE_NAME
, DATABASE_USER
và DATABASE_PASSWORD
nhưng bạn không sử dụng nó trong ứng dụng của mình.
Cập nhật thuộc tính của bạn như thế này. (Tốt hơn nếu bạn tạo một hồ sơ để ứng dụng của bạn chạy bên ngoài docker)
spring.datasource.url=jdbc:mysql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}
Nếu bạn thực sự muốn sử dụng localhost
là db_url của bạn . Bạn cũng có thể sử dụng network_mode: "service:[service name]"
thuộc tính của docker soạn. Chỉ có một nhược điểm là không thể sử dụng thuộc tính này với port
tài sản.
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
Và tệp thuộc tính của bạn có thể trông giống như
spring.datasource.url=jdbc:mysql://localhost:3306/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}