gpt4 book ai didi

java - Play Framework 2.4 docker镜像运行错误

转载 作者:行者123 更新时间:2023-11-30 03:15:48 24 4
gpt4 key购买 nike

我已经为我的应用程序设置了一个 Docker 镜像。目标平台是 debian jessie。图像构建没有错误。当我尝试运行它时出现问题。我这样做是这样的:

    sudo docker run appname -Dconfig.file=/tmp/application.conf -Dapplication.home=/root/targer/universal/stage

,提供外部配置文件和 application.home 环境变量

问题是,DI 类有问题,它使用自定义绑定(bind),即我将此行放在 application.conf 中:

    play.modules.enabled += "me.example.inject.SetupInjectors"

在这个扩展了 AbstractModule 的类中,我绑定(bind)了我的实现,如下所示:

    bind(Interface.class).to(InterfaceImplementation.class);

错误是

    Oops, cannot start the server. com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) No implementation for core.notification.email.MailTemplateService was bound.
while locating core.notification.email.MailTemplateService
for parameter 2 at core.services.impl.user.service.UserServiceImpl.<init>(UserServiceImpl.java:55)
while locating core.services.impl.user.service.UserService
for field at controllers.Application.userService(Application.java:34)
while locating controllers.Application
for parameter 1 at router.Routes.<init>(Routes.scala:108)
while locating router.Routes
while locating play.api.inject.RoutesProvider
while locating play.api.routing.Router

对于所有自定义绑定(bind)组件,它会重复相同的错误 46 次。不用说,激活器运行就像一个魅力。看来我的 play.modules.enabled 设置在启动过程中被忽略了

此外,值得一提的是,我对其他 Play 项目有一个库依赖项,该项目被打包为库并存储在 sonatype nexus 服务器上。

最佳答案

问题是微不足道的。我已经从主机 FS 传递了 -Dconfig.file ,这是荒谬的。因此,我将启动脚本更改为

sudo docker run -v /home/myapp/conf:/conf myapp-Dconfig.file=/conf/application.conf -Dapplication.home="/root/target/universal/stage"

将我的本地路径映射到图像的文件系统。 Play Framework 使用了类路径中的 application.conf(它就在那里,因为我对另一个 Play! 项目有库依赖关系。

关于java - Play Framework 2.4 docker镜像运行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32654858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com