我有一个 Scala 应用程序,我想在 Docker 容器中运行它。为了构建 docker 镜像,我使用了 sbt-native-packager。
我使用的基本映像是“openjdk:8-jre-alpine”。
项目/plugins.sbt
resolvers += Resolver.typesafeRepo("releases")
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.17")
Run Code Online (Sandbox Code Playgroud)
生成.sbt
enablePlugins(JavaAppPackaging)
mainClass in Compile := Some("MyAppClass")
enablePlugins(DockerPlugin)
dockerBaseImage := "openjdk:8-jre-alpine" // startup fails with permission denied if using alpine :-(
Run Code Online (Sandbox Code Playgroud)
使用生成的图像运行容器会导致启动时出现以下错误:
docker run my-app:latest
Run Code Online (Sandbox Code Playgroud)
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"/opt/docker/bin/my-app\": permission denied": unknown.
ERRO[0000] error waiting for container: context canceled
Run Code Online (Sandbox Code Playgroud)
应用程序在使用“openjdk:8-jre”时正常启动。
更新
内容 …
Kotlin 中是否有与Scala 的 Traversable.collect函数等效的函数?
具体来说,我想将一个列表映射到一个列表,但前提是能够成功。
myList.map {
val myNullableThing = it.someNullableMethod()
// If it is null, then I cannot continue here
// and I want to simply ignore this item
}
Run Code Online (Sandbox Code Playgroud) 有SDKMAN!已安装(http://sdkman.io/),则可以使用以下命令从命令行安装软件包:
sdk install java 8u144-zulu
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从脚本“ my-installer.sh”中执行相同的操作时,出现错误消息:“ sdk:找不到命令”。
my-installer.sh:
#!/bin/bash
sdk install java 8u144-zulu
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?