我正在尝试创建一个可以将Docker容器发布到DockerHub或我们的内部Docker存储库的SBT构建。我使用sbt-native-packager 1.0.3构建Docker镜像。
这是我的build.sbt的摘录:
dockerRepository in dockerInternal := Some("thomaso"),
packageName in dockerInternal := "externalname",
sbt docker:publish
现在已成功发布到DockerHub上的thomaso / externalname。
要添加发布到我们内部Docker仓库的选项,我添加了一个名为dockerInternal的配置:
val dockerInternal = config("dockerInternal") extend Docker
然后我添加了这两个设置来覆盖默认值:
dockerRepository in Docker := Some("docker.nrk.no/project"),
packageName in Docker := "internalname",
我的期望是sbt dockerInternal:publish
应该将Docker镜像发布到docker.nrk.no/project/internalname。相反,我收到此错误消息:
delivering ivy file to /home/n06944/repos/nrk.recommendations/api/target/scala-2.10/ivy-0.1- SNAPSHOT.xml
java.lang.RuntimeException: Repository for publishing is not specified.
在我看来,SBT试图发布到Ivy,而不是Docker - 当我将值硬编码到内部仓库时,发布工作正常,日志中没有提到常春藤。 Docker配置修改了发布任务,我希望通过让dockerInternal扩展Docker,我将继承Docker特定的发布行为。这是一个不正确的假设吗?我错过了一些咒语,还是有其他方法会更好?
答案 0 :(得分:0)
您忘记将所有必要的任务导入新配置。 sbt-native-packager建议为不同的打包配置生成子模块。
如果你想摆弄配置范围(速度非常快)here is another SO answer I gave。
欢呼声, 缪奇