sbt在运行游戏docker容器中下载失败

时间:2016-09-22 10:03:37

标签: windows maven docker playframework sbt

我已成功为play-java构建了泊坞窗图像。但是当尝试使用docker run -p 0.0.0.0:9000:9000 egima/play activator run sbt为它生成容器时,无法下载一个特定的依赖项。日志看起来像这样:

==== Maven2 Local: tried
  file:/root/.m2/repository/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0.jar
==== Apache Repository: tried  https://repository.apache.org/content/repositories/releases/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0.jar[0m
    ::::::::::::::::::::::::::::::::::::::::::::::
    ::              FAILED DOWNLOADS            ::
    :: ^ see resolution messages for details  ^ ::
    ::::::::::::::::::::::::::::::::::::::::::::::
    :: org.sonatype.sisu#sisu-guice;3.1.0!sisu-guice.jar
    ::::::::::::::::::::::::::::::::::::::::::::::

注意tried存储库。我已经跟踪all the different variants将my local maven repos包含在我的机器上,我从日志中确认根据我在本地maven repos中指定的内容进行检查但没有运气。
<登记/> 我的解析器build.sbt/project/plugins.sbt

resolvers ++=Seq(
    Resolver.sonatypeRepo("public"),
    Resolver.mavenLocal,
    "Apache Repository" at "https://repository.apache.org/content/repositories/releases/"
    )

我还检查了我的本地maven仓库以确保缺少依赖性。缺少什么?

1 个答案:

答案 0 :(得分:1)

评论部分建议

VonCDockerfile中添加以下步骤:

RUN ln -s /C/Users/me/.m2 /root/.m2

我相信此命令应在我的主机上的$MAVEN_HOME与解析为Resolver.mavenLocal的解析路径/root/.m2之间建立软链接。

这应该是解决方案。然而,在尝试之后,我意识到共享路径/c/Users/me(大写C不可见,不知道为什么)在VM内部是可见的,但在容器内是不可见的。因此,在Dockerfile中包含该行会给我:

ln:cannot access /c/Users/me/.m2: No such file or directory

此外,即使执行RUN ls /root也会给我一个类似的错误,这意味着目前路径目前还不存在。

我自己的推论是,解决方案在于通过任何可用的方法将主机路径安装到目标路径上,我认为这是本论坛上讨论得很好的主题。对于我的特殊情况,docker run期间使用-v标志执行装载解决了问题。

这是我使用的确切命令:

docker run -v /c/Users/me/.m2:/root/.m2 -p 0.0.0.0:9000:9000 egima/play activator run

我已经为那些需要更多信息的人写了a complete blog post