You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows11下Docker手动构建镜像运行报no such file or directory错误求助

问题诱因分析
  • 核心原因:手动构建使用的Dockerfile缺失文件拷贝逻辑
    sbt执行docker:publishLocal命令时,sbt-native-packager/sbt-docker插件会自动完成两个手动构建遗漏的步骤:
  1. 自动将sbt编译打包生成的应用启动脚本、依赖包、二进制文件全部放入镜像构建上下文目录
  2. 自动在Dockerfile中追加COPY指令,把整个应用目录拷贝到镜像内的/app路径下
    你贴出的仅包含FROM/ENTRYPOINT/EXPOSE的Dockerfile是不完整的,没有把本地编译好的/app/bin/app-core相关文件复制到镜像内,所以容器启动时找不到对应文件。
  • 镜像名称不匹配的潜在问题
    你手动构建时指定的镜像标签是app:test1,但运行命令使用的是app-core:test1,如果本地存在旧的app-core:test1镜像,你实际运行的是没有包含应用文件的错误镜像,也会触发该报错。
  • Windows环境换行符兼容问题(次要诱因)
    如果已经补全COPY逻辑仍报错,需要检查app-core启动脚本的换行符:Windows环境下sbt编译生成的脚本默认可能是CRLF换行,而Linux容器仅识别LF换行,会把CR字符识别为文件名的一部分,导致系统找不到对应路径。
修复方案
  • 补全Dockerfile的COPY逻辑:在EXPOSE指令前添加如下内容,把sbt编译生成的打包产物拷贝到镜像内:
COPY ./target/universal/stage /app
  • 统一镜像标签:构建和运行使用相同的镜像名,比如构建时执行docker build . -f Dockerfile -t app-core:test1,再执行对应运行命令即可。
  • 修复Windows换行符问题:可以在Dockerfile中添加如下指令转换脚本换行符:
RUN apt-get update && apt-get install -y dos2unix && dos2unix /app/bin/app-core

内容的提问来源于stack exchange,提问作者osumatu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:27:01