如何在Dockerfile中为SBT插件添加自定义命令

时间:2019-06-12 05:00:01

标签: scala docker sbt

当我执行sbt docker:publishLocal时,它会创建一个Dockerfile自动删除该文件的先前内容。

我想添加自定义命令以将cassandra添加到容器中。我复制粘贴了该文件的内容

https://github.com/docker-library/cassandra/blob/064fb4e2682bf9c1909e4cb27225fa74862c9086/3.11/Dockerfile

,并尝试再次运行以上命令。但这会清除所有现有内容,并将其替换为默认内容。

如何在Dockerfile或build.sbt中添加docker命令?

1 个答案:

答案 0 :(得分:2)

sbt-docker插件具有一个自定义部分including one "Write from Scratch",该部分可能很有趣:

  

您只需使用以下命令即可清除所有docker命令

dockerCommands := Seq()
  

现在让我们开始添加一些Docker命令。

import com.typesafe.sbt.packager.docker._

dockerCommands := Seq(
  Cmd("FROM", "openjdk:8"),
  Cmd("LABEL", s"""MAINTAINER="${maintainer.value}""""),
  ExecCmd("CMD", "echo", "Hello, World from Docker")
)

您可以用这种方式编写自定义Dockerfile:它将正确地重新生成。

  

我该如何添加这样的内容:

 RUN set -x \ 
     && apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \ 
     && wget -O /usr/local/bin/gosu.... 

如示例from the documentation

ExecCmd("RUN",
    "set", "-x",
     "&&",
     "apt-get", "update", ...
),