小编Ale*_*ann的帖子

sbt-native-packager:Alpine Docker Image 上的 Scala 应用程序因权限被拒绝而失败

我有一个 Scala 应用程序,我想在 Docker 容器中运行它。为了构建 docker 镜像,我使用了 sbt-native-packager。

我使用的基本映像是“openjdk:8-jre-alpine”。

  • 试过“openjdk:8-jdk-alpine” - 没有任何区别
  • 尝试 sbt-native-packager 1.3.20 - 没有任何区别

项目/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”时正常启动。

更新

内容 …

scala sbt docker sbt-native-packager alpine-linux

5
推荐指数
1
解决办法
2168
查看次数

Kotlin 相当于 Scala Traversable.collect

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)

scala kotlin

4
推荐指数
1
解决办法
434
查看次数

如何使用SDKMAN!从脚本内安装软件包

有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)

我究竟做错了什么?

bash sdk sh sdkman

1
推荐指数
2
解决办法
814
查看次数

标签 统计

scala ×2

alpine-linux ×1

bash ×1

docker ×1

kotlin ×1

sbt ×1

sbt-native-packager ×1

sdk ×1

sdkman ×1

sh ×1