我已经成功地为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存储库。我遵循所有不同的变体在我的机器上包含local maven repos,我从日志中确认sbt根据我在本地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,以确保缺少的依赖项存在。少了什么?
发布于 2016-09-22 13:10:31
VonC在注释部分建议在Dockerfile中添加以下步骤
RUN ln -s /C/Users/me/.m2 /root/.m2我认为这个命令应该在我的主机上的$MAVEN_HOME和解析路径Resolver.mavenLocal之间建立一个软链接,解析路径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我已经为那些需要更多信息的人写了关于his的完整的博客文章。
https://stackoverflow.com/questions/39636072
复制相似问题