CMD Dockerfile 中的转义命令

蓝天

要执行 sbt 以执行我使用的特定 Main 方法:

 sbt "run-main tickdata.Main"

应该如何sbt "run-main tickdata.Main"在 docker 中使用该命令

我试过添加到Dockerfile

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

但收到错误:

[error] Expected letter
[error] Expected symbol
[error] Expected '!'
[error] Expected '+'
[error] Expected '++'
[error] Expected '^'
[error] Expected '^^'
[error] Expected 'debug'
[error] Expected 'info'
[error] Expected 'warn'
[error] Expected 'error'
[error] Expected ';'
[error] Expected end of input.
[error] Expected 'early('
[error] Expected '-'
[error] Expected '--'
[error] Expected 'show'
[error] Expected 'all'
[error] Expected '*'
[error] Expected '{'
[error] Expected project ID
[error] Expected configuration
[error] Expected key
[error] "run-main tickdata.Main"
[error] ^
马特乌斯·库布佐克

你不应该添加"和逃避它们。

将文本换行"用于确保使用空格分隔它们时将其作为一个参数而不是多个参数传递,但是如果您将参数(和程序)作为String用逗号分隔的 s传递,则不必对它们进行转义.

sbt 期望run-main tickdata.Main作为一个参数 - 在 shell 中它必须通过"run-main tickdata.Main"以确保 shell 将run-main tickdata.Main作为单个参数传递(不带引号!)。Docker 还会删除这些引号,因此如果您添加自己的引号并对其进行转义,那么 sbt 将接收命令"run-main tickdata.Main"而不是,run-main tickdata.Main并且它不知道如何解析它。

所以就

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

关于它是否有意义,请参阅@LuisMiguelMejíaSuárez 评论。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章