Windows sbt在运行play docker容器中下载失败

Windows sbt在运行play docker容器中下载失败,windows,maven,docker,playframework,sbt,Windows,Maven,Docker,Playframework,Sbt,我已经成功地为playjava构建了我的docker镜像。但是,当尝试使用docker run-p 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 Repos

我已经成功地为
playjava
构建了我的docker镜像。但是,当尝试使用
docker run-p 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
    ::::::::::::::::::::::::::::::::::::::::::::::
请注意
已尝试的
存储库。我已经在我的机器上加入了
local
maven repos,我从日志中确认sbt根据我在local 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 repo,以确保缺少的依赖项存在。缺少什么?

在评论部分建议在
Dockerfile
中添加以下步骤:

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

我为那些需要更多信息的人写了关于他的文章。

/root/.m2?为什么要使用根帐户?@VonC,该路径由
sbt
Resolver.mavenLocal
自动转换。我还尝试了在链接问题中适用于其他人的路径,仍然没有运气。当然:它解析为$HOME/.m2。那个文件夹是空的吗?它不应该包含一些元素吗?您是否有本地的.m2文件夹,您应该共享(-v)?在windows中,我有
C:\Users\me\.m2\repository
,不确定by
/root/.m2
sbt是否表示
C:\Users\me\.m2
。但是我给出的主机路径非常有效,并且存储了我所有的maven工件。请尝试,在dockerfile中运行ln-s/C/Users/me/.m2/root/.m2
:重建映像并重新启动容器。