繁体   English   中英

运行 docker-compose over ssh call tr​​ough gitlab CI/CD to amazon linux AMI EC2

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM