Play Framework 2.4 docker 图片 运行 错误
Play Framework 2.4 docker image run error
我已经为我的应用程序设置了一个 docker 图片。目标平台是 debian jessie。
图像构建无误。当我尝试 运行 时出现问题。我这样做:
sudo docker run appname -Dconfig.file=/tmp/application.conf -Dapplication.home=/root/targer/universal/stage
,提供外部配置文件和 application.home 环境变量
麻烦的是,使用自定义绑定的 DI classes 有问题,即我将这一行放在 application.conf:
play.modules.enabled += "me.example.inject.SetupInjectors"
在扩展 AbstractModule 的 class 中,我将我的实现绑定为:
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
它对所有自定义绑定组件重复了 46 次相同的错误。不用说,activator 运行 就像一个魅力。看起来是这样,我的 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"
将我的本地路径映射到图像的 fs。 Play Framework 使用了类路径中的 application.conf(它就在那里,因为我对另一个 Play! 项目有库依赖性。
我已经为我的应用程序设置了一个 docker 图片。目标平台是 debian jessie。 图像构建无误。当我尝试 运行 时出现问题。我这样做:
sudo docker run appname -Dconfig.file=/tmp/application.conf -Dapplication.home=/root/targer/universal/stage
,提供外部配置文件和 application.home 环境变量
麻烦的是,使用自定义绑定的 DI classes 有问题,即我将这一行放在 application.conf:
play.modules.enabled += "me.example.inject.SetupInjectors"
在扩展 AbstractModule 的 class 中,我将我的实现绑定为:
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
它对所有自定义绑定组件重复了 46 次相同的错误。不用说,activator 运行 就像一个魅力。看起来是这样,我的 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"
将我的本地路径映射到图像的 fs。 Play Framework 使用了类路径中的 application.conf(它就在那里,因为我对另一个 Play! 项目有库依赖性。