我正在使用 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
安装依赖项的正确方法任何帮助/指示将不胜感激。
删除
sudo
。
ExecCmd("RUN","apt-get","update")
图像中不存在错误所示的内容。
此外,您不需要它,因为构建可能是作为 root 用户完成的,并且最后只切换到非 root 用户。 (值得检查的是,我不知道 SBT 插件默认生成什么)。