如何使用 sbt-native-packager 插件在 Docker 镜像中安装 apt-get 依赖项

问题描述 投票:0回答:1

我正在使用 sbt-native-packager 插件为 Scala 项目生成 Docker 映像。该项目需要在映像上安装特定的包 libnetcdf.so

我在 build.sbt 上使用以下配置

dockerCommands ++= Seq(
  ExecCmd("RUN","sudo","apt-get","update"),
  ExecCmd("RUN","sudo","apt-get","install","-y","libnetcdf-dev")
)

但是,当使用 sbt docker:publishLocal 生成/构建图像时,我收到以下错误。

[error] #18 [mainstage 6/7] RUN ["sudo", "apt-get", "update"]
[error] #18 0.358 runc run failed: unable to start container process: exec: "sudo": executable file not found in $PATH
[error] #18 ERROR: process "sudo apt-get update" did not complete successfully: exit code: 1
[error] ------
[error]  > [mainstage 6/7] RUN ["sudo", "apt-get", "update"]:
[error] 0.358 runc run failed: unable to start container process: exec: "sudo": executable file not found in $PATH
[error] ------
[error] Dockerfile:24
[error] --------------------
[error]   22 |     ENTRYPOINT ["/opt/docker/bin/root"]
[error]   23 |     CMD []
[error]   24 | >>> RUN ["sudo", "apt-get", "update"]
[error]   25 |     RUN ["sudo", "apt-get", "install", "-y", "libnetcdf-dev"]
[error]   26 |
[error] --------------------
[error] ERROR: failed to solve: process "sudo apt-get update" did not complete successfully: exit code: 1

无法找到使用 dockerCommands

安装依赖项的正确方法

任何帮助/指示将不胜感激。

docker scala sbt sbt-native-packager
1个回答
0
投票

删除

sudo

ExecCmd("RUN","apt-get","update")

图像中不存在错误所示的内容。

此外,您不需要它,因为构建可能是作为 root 用户完成的,并且最后只切换到非 root 用户。 (值得检查的是,我不知道 SBT 插件默认生成什么)。

© www.soinside.com 2019 - 2024. All rights reserved.