我想在dockerfile中执行以下命令:
java -jar kafka-connect-cli-1.0.6-all.jar create cassandra-sink-orders < cassandra-sink-distributed-orders.properties
这是我尝试的但它给了我错误:
无法执行cassandra-sink-orders&lt; cassandra-sink-distributed-orders.properties
CMD ["java", "-jar", "kafka-connect-cli-1.0.6-all.jar", "create", "cassandra-sink-orders", "<", "cassandra-sink-distributed-orders.properties"]
答案 0 :(得分:2)
使用<
的输出重定向是一个shell功能。向CMD
提供JSON列表时,shell不会执行该命令。
要使用shell功能,请使用以下格式之一:
CMD ["sh", "-c", "java -jar kafka-connect-cli-1.0.6-all.jar create cassandra-sink-orders < cassandra-sink-distributed-orders.properties"]
CMD java -jar kafka-connect-cli-1.0.6-all.jar create cassandra-sink-orders < cassandra-sink-distributed-orders.properties
CMD指令有三种形式:
CMD ["executable","param1","param2"]
( exec 表单,这是首选表单)CMD ["param1","param2"]
(作为ENTRYPOINT的默认参数)CMD command param1 param2
( shell 表单)[...]
注意:与shell表单不同,exec表单不会调用命令shell。这意味着不会发生正常的shell处理。例如,
CMD [ "echo", "$HOME" ]
不会对$HOME
执行变量替换。如果您需要shell处理,则可以使用shell表单或直接执行shell,例如:CMD [ "sh", "-c", "echo $HOME" ]
。
答案 1 :(得分:0)
你也可以这样运行它:
CMD "java -jar kafka-connect-cli-1.0.6-all.jar create cassandra-sink-orders < cassandra-sink-distributed-orders.properties"