Почему docker-compose не видит мой файл .env при выполнении команды ssh внутри сценария bash?

Когда я ssh на server.foo.com как пользователь fish и выполняю docker-compose up, докер увидит соответствующий файл .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 [email protected] 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.

Почему docker-compose не видит мой файл .env при выполнении команды ssh внутри сценария bash?

Вы пробовали заключать все связанные инструкции в двойные кавычки? Кажется, что на удаленном сервере выполняется только первая инструкция, а остальная часть выполняется на локальной оболочке

Arthur Attout 19.06.2018 00:35

@ArthurAttout, вы просто опередили меня :-) Действительно, это проблема с цитированием, все после "&&" выполняется на хост-машине, поэтому сообщение об ошибке исходит от локального docker-compose! Я предлагаю вам добавить это в качестве ответа!

Sergiy Sokolenko 19.06.2018 01:00
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
2
136
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны заключить команду в двойные кавычки, иначе связанные инструкции будут выполняться в локальной оболочке.

 ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected] 
 "docker-compose down && \
 docker-compose pull && \
 docker-compose up -d && \
 docker-compose scale api=4 && \
 docker-compose scale ml=4"

Другие вопросы по теме