当我这样做时sbt docker:publishLocal,它会创建一个 Dockerfile 自动擦除文件的先前内容。
我想添加自定义命令以将 cassandra 添加到容器中。我复制粘贴了这个文件的内容
并尝试再次运行上面的命令。但这会清除所有现有内容并将其替换为默认内容。
如何在 Dockerfile 或 build.sbt 中添加 docker 命令?
sbt-docker 插件有一个自定义部分,包括一个 "Write from Scratch",您可能会感兴趣:
您可以简单地清除所有 docker 命令
dockerCommands := Seq()
Run Code Online (Sandbox Code Playgroud)
现在让我们开始添加一些 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")
)
Run Code Online (Sandbox Code Playgroud)
您可以通过这种方式编写自定义 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....
Run Code Online (Sandbox Code Playgroud)
如文档中的示例所示:
ExecCmd("RUN",
"set", "-x",
"&&",
"apt-get", "update", ...
),
Run Code Online (Sandbox Code Playgroud)