Docker化Scala应用程序非常简单。 首先要考虑的是制造一个胖子罐。 现在我们所有人来自不同的背景,包括maven / gradle和处理此问题的不同插件。 如果您使用sbt,则方法是使用sbt-assembly插件。
要使用它,我们应该将其添加到我们的project / plugins.sbt文件中。 如果文件不存在,请创建它。
logLevel := Level.Warn
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
所以通过执行
sbt clean assembly
我们最终将在目标/scala-**/**.jar路径中找到一个胖子罐。
现在,最简单的部分是将我们的应用程序放入docker中,因此需要一个Dockerfile。
我们将使用openjdk alpine作为基本映像。
FROM openjdk:8-jre-alpine
ADD target/scala-**/your-fat-jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
上面的方法可以正常工作,并提供了自定义构建过程所需的控制。 要获得更多引导经验,可以使用sbt本机打包程序 。
您需要做的就是将插件添加到project / plugins.sbt文件。
logLevel := Level.Warn
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.4")
然后,指定应用程序的主类,并在build.sbt文件中启用本机打包程序的Java和Docker插件。
mainClass in Compile := Some("your.package.MainClass")
enablePlugins(JavaAppPackaging)
enablePlugins(DockerPlugin)
下一步是发出sbt命令。
sbt docker:publishLocal
此命令将构建您的应用程序,包括jar所需的二进制文件,将您的应用程序容器化并将其发布到本地Maven存储库。
翻译自: https://www.javacodegeeks.com/2018/05/dockerize-your-scala-application.html