【发布时间】:2021-05-15 18:19:47
【问题描述】:
我有一个可以成功运行的java项目
./mvnw spring-boot:run
使用以下指令集通过 docker compose 运行的同一项目将无法运行:
docker-compose.yml 内部:
project:
build: ./project
ports:
- 8080:8080
在项目目录的 Dockerfile 中:
ENTRYPOINT ["./mvnw","spring-boot:run"]
现在有趣的是,我在使用 docker-compose 时收到以下异常消息:
InvocationTargetException: Invalid bean definition with name 'redisTemplate' defined in class path resource [****/****/****/****/****/config/RedisContextConfiguration.class]: Cannot register bean definition [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=****.****.***.***.redis.config.RedisContextConfiguration; factoryMethodName=redisTemplate; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [***/***/**/***/**/config/RedisContextConfiguration.class]] for bean 'redisTemplate': There is already [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=appConfiguration; factoryMethodName=redisTemplate; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [***/****/***/***/config/AppConfiguration.class]]
我之前遇到了完全相同的错误,但我设法通过在 application.properties 文件中添加以下行来避免它:
spring.data.redis.repositories.enabled=false
现在这告诉我,docker-compose 看不到对 application.properties 所做的更改。由于容器无法运行,我无法使用 docker exec 来查看里面的文件并查看 application.properties 里面的内容。
有没有办法在用于创建容器的图像中访问此 .properties,以便我可以确认我对该属性不存在的怀疑? 项目在本地运行但不使用 docker 可能还有其他原因吗? 感谢您的帮助。
【问题讨论】:
标签: java spring-boot docker docker-compose