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

Dockerfile中CMD执行sbt run-main指定主类的正确方法

解决Docker中执行sbt run-main的参数错误问题

老哥,你这问题我之前也踩过坑!问题出在数组形式CMD的参数处理上——你把整个"run-main tickdata.Main"当成单个参数传给sbt,导致sbt把带引号的完整字符串当成了无法识别的命令,这才抛出一堆语法错误。

给你两种靠谱的解决办法:

方法1:用Shell形式的CMD(最直观)

直接写原生shell命令就行,Docker会调用shell帮你自动解析参数,不用手动折腾引号:

CMD sbt "run-main tickdata.Main"

方法2:用数组形式拆分参数(更符合Docker最佳实践)

如果坚持用数组格式,得把每个独立的参数拆分开,不要加额外引号——数组里的每个元素会被直接作为sbt的参数传递:

CMD ["sbt", "run-main", "tickdata.Main"]

为啥原来的写法不行?

当你用数组格式的CMD时,Docker不会经过shell解析,而是原封不动把每个数组元素传给sbt。你之前写的"run-main tickdata.Main"会被sbt当成一个单独的、带空格和引号的参数,sbt根本认不出这是合法命令,自然就报那些奇怪的语法错误了。拆分之后,run-main是sbt的子命令,tickdata.Main是它的目标参数,sbt就能正确执行啦!

内容的提问来源于stack exchange,提问作者blue-sky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:17:03