重写/外部化应用程序.属性到docker- composition .yml中



已经有很多答案,但没有一个能解决我的问题,请帮助!

version: '3.8'
services:
mysql:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=****
- MYSQL_DATABASE=portfolio
- MYSQL_USER=manager
- MYSQL_PASSWORD=******
volumes:
- mysql-data:/var/lib/mysql
ports:
- "8010:3306"
api:
build: ./api
ports:
- "8005:8080"
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/portfolio
- SPRING_DATASOURCE_USERNAME=manager
- SPRING_DATASOURCE_PASSWORD=******
- SECRET_REGISTRATION_KEY=&&&&&&
depends_on:
- mysql
volumes:
mysql-data:

Inside myapplication.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/portfolio_dev
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=manager
spring.datasource.password=$@(&%(@%(&%
secret.registration.key=[RANDOM_KEY]

预期行为:在Spring Boot项目中,SPRING_DATASOURCE_URL等环境变量会覆盖application.properties中的spring.datasource.url

实际行为:api容器里面有弹簧引导不接docker-compose.yml环境变量,违约的application.properties

:我运行了docker-compose up --build以确保JAR文件被重建并且mysql服务器运行良好。

这真是一件奇怪的事情,当一个开发人员在发布他绝望的StackOverflow问题10分钟后找到了他的解决方案。

答:https://stackoverflow.com/a/64940105/15119843

Spring Boot容器在mysql开始工作后启动,但没有准备好连接,所以SB容器不能连接到那个。

编辑:将restart: on-failure添加到Spring Boot容器中。当出现故障(停止进程)时,它会重新启动api。

最新更新