Maven项目在本地工作,但不在docker compose上



我有一个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里面的内容

有没有办法访问用于创建容器的图像中的这个.属性,这样我就可以确认我对该属性不在那里的怀疑?项目在本地运行但不使用docker,可能还有其他原因吗?感谢您的帮助。

您可以尝试docker run -it your_image_name sh来获得一个shell,它将帮助您期待您的图像内容。我在docker命令中看到两个环境变量SERVER_PORT和APP_PROPERTIES,但您没有在docker-compose.yml.中声明它们

原来Dockerfile引用的是docker-application.properties,而不是application.properties文件。

最新更新