![](/img/trans.png)
[英]Installing docker-compose on Amazon EC2 Linux 2. 9kb docker-compose file
[英]Run docker-compose over ssh call trough gitlab CI/CD to amazon linux AMI EC2
我刚刚花了很多时间自己找出问题的答案,这有点简单,但我想知道是否有人可以解释我为什么它只能像下面这样工作。
为了恢复,我想通过从 gitlab ci cd runner 到我的 amazon ec2 ami 的 ssh 命令运行 docker-compose,并且只有以下命令有效 =>
ssh -o StrictHostKeyChecking=no -i $sshKey $user@$host 'docker-compose -v'
我试过用双引号: ssh -o StrictHostKeyChecking=no -i $sshKey $user@$host "docker-compose -v"
没有报价:
ssh -o StrictHostKeyChecking=no -i $sshKey $user@$host docker-compose -v
例如,当我尝试在 Windows 终端下运行命令时,使用双引号运行它没有问题...
这是因为 Windows 中的命令解释器的行为与 Linux 中的 bash 不同。
请参阅“如何使 Windows 命令提示符将单引号视为双引号? ”
在 Win32 程序中,将命令行拆分为“单词”——C 和 C++ 语言中的程序将 NUL 终止的多字节字符串视为传递给
main()
的参数数组——是运行时库的范围。那些程序。在 Unices 和 Linux 上,shell 进行分词,因为操作系统实际上是根据参数字符串数组工作的。
这不是 Win32 的情况。在 Win32 上,操作系统本身以命令尾的形式运行:一个长字符串,其中仍然包含一个最初在命令行上键入的所有引号。
因此,在您的情况下,“docker-compose -v”可以在 Windows 上运行,但在 Linux bash 中不行,因为它的外壳会删除引号,并且您会得到两个字符串,而不是一个docker-compose -v
命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.