scala - OCI 错误“/opt/docker/bin/my_job”:没有使用 sbt docker:publishLocal 的文件或目录
问题描述
如果您使用sbt docker:publishLocal
从您的 scala 项目构建 docker 映像,您将看到打印出以下行:
[info] Packaging /home/user123/myUser/repos/my_job/target/scala-2.12/app_internal_2.12-0.1.jar ...
[info] Done packaging.
[info] Sending build context to Docker daemon 129.7MB
[info] Step 1/7 : FROM openjdk:11-jre
[info] ---> 8c8b7f0ab84c
[info] Step 2/7 : LABEL MAINTAINER="no_name@my.org"
[info] ---> Using cache
[info] ---> d5caf9a92999
[info] Step 3/7 : WORKDIR /opt/docker
[info] ---> Using cache
[info] ---> d887eeb10e8e
[info] Step 4/7 : ADD --chown=root:root opt /opt
[info] ---> 1b43a84a5e32
[info] Step 5/7 : USER root
[info] ---> Running in 282c7f7de8ad
[info] Removing intermediate container 282c7f7de8ad
[info] ---> 11fed4892683
[info] Step 6/7 : ENTRYPOINT ["/opt/docker/bin/my_job"]
[info] ---> Running in 1d297dd1e960
[info] Removing intermediate container 1d297dd1e960
[info] ---> 1923a8df3fcf
[info] Step 7/7 : CMD []
[info] ---> Running in 3d9f7a4a262b
[info] Removing intermediate container 3d9f7a4a262b
[info] ---> d67ed46fd3fe
[info] Successfully built d67ed46fd3fe
[info] Successfully tagged docker_app_internal:0.1
[info] Built image docker_app_internal with tags [0.1]
[success] Total time: 25 s, completed Mar 27, 2019 10:23:35 AM
您可能会对错误感到困惑。为什么:这有效:
docker run -it --entrypoint=/bin/bash docker_app_internal:0.1 -i
不工作:
docker run docker_app_internal:0.1
感谢 @Muki 创建这个有用的项目。
参考:https://github.com/sbt/sbt-native-packager
解决方案
如果您的项目根文件夹与 MainClass 名称不同,那么您的entrypoint
usingsbt docker:publishLocal
将变为/your/linuxpath/bin/rootFolder
. 但是,在 docker 映像中创建的实际文件是/your/linuxpath/bin/main-class
(如果您的主类名称是 MainClass)
要解决此问题,请明确提及入口点,build.sbt
如下所示:
dockerEntrypoint := Seq("/opt/docker/bin/main-class")
推荐阅读
- google-analytics-api - 从 aws sagemaker 调用谷歌分析 api
- flutter - How to update the amount value when the user add data and store it to list view flutter
- c++ - 如何更改 CIPAddressCtrl 的背景颜色?
- graphql - 查询不会通过 GraphQL 从 DynamoDB 返回某些项目
- python - 如何在 python 中输入条件参数类型?
- python - 编译的 opencv 4.5.1 仅适用于(windows)anaconda - 为什么?
- html - 如何在使用 html 和 css 或引导程序附加的屏幕截图上制作垂直向上的表格标题?
- powerbi - 以另一列的最小值/最大值作为条件测量为 SUM
- jspdf - Jspdf 和 html2pdf 不能处理多页的动态数据(pdf 中超过 25 页),重叠问题
- r - 使用矩阵在另一个矩阵中填充 NA 值