我已成功为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仓库以确保缺少依赖性。缺少什么?
答案 0 :(得分:1)
VonC在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
我已经为那些需要更多信息的人写了a complete blog post。