为什么在bash脚本中执行ssh命令时,docker-compose没有看到我的.env文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在bash脚本中执行ssh命令时,docker-compose没有看到我的.env文件?相关的知识,希望对你有一定的参考价值。
当我以server.foo
用户ssh到fish
.com并执行docker-compose时,docker会看到一个相应的.env文件,该文件位于同一目录中。
[fish@staging-core ~]$ ls -al
total 28
drwx------. 4 fish fish 191 Jun 18 21:47 .
drwxr-xr-x. 4 root root 34 Jun 18 20:35 ..
-rw-------. 1 fish fish 558 Jun 18 22:15 .bash_history
-rw-r--r--. 1 fish fish 18 Apr 11 00:53 .bash_logout
-rw-r--r--. 1 fish fish 193 Apr 11 00:53 .bash_profile
-rw-r--r--. 1 fish fish 231 Apr 11 00:53 .bashrc
-rw-r--r--. 1 fish fish 0 Jun 18 20:19 .cloud-locale-test.skip
drwx------. 2 fish fish 25 Jun 18 21:41 .docker
-rw-r--r--. 1 fish fish 838 Jun 18 22:15 .env
-rw-r--r--. 1 fish fish 1066 Jun 18 22:15 docker-compose.yml
drwx------. 2 fish fish 29 Jun 18 20:35 .ssh
但是,当我尝试通过bash脚本运行它时,我收到以下错误:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null fish@server.foo.com docker-compose down && docker-compose pull && docker-compose up -d && docker-compose scale api=4 && docker-compose scale ml=4
我明白了
Warning: Permanently added 'server.foo.com,165.227.100.2' (ECDSA) to the list of known hosts.
Removing network core_default
Network core_default not found.
WARNING: The FISH_TAG variable is not set. Defaulting to a blank string.
为什么在bash脚本中执行ssh命令时,docker-compose没有看到我的.env文件?
答案
您应该双引号命令,否则链接的指令将在本地shell上执行
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null fish@server.foo.com
"docker-compose down &&
docker-compose pull &&
docker-compose up -d &&
docker-compose scale api=4 &&
docker-compose scale ml=4"
以上是关于为什么在bash脚本中执行ssh命令时,docker-compose没有看到我的.env文件?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 ssh 从 crontab 失败但从命令行执行时成功?
bash 脚本中的 ssh“端口 22:没有到主机的路由”错误