Я использую docker compose для создания сети контейнеров, где один из контейнеров запрашивает другой для запуска процесса. Клиент также должен контролировать этот процесс в случае ошибок или когда он завершается. Мой подход заключается в использовании подпроцесса Python Popen следующим образом:
process = subprocess.Popen(cmd,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
, где cmd равно ['docker-compose', 'exec', 'service2', 'sh', '-c', 'cp sourcefile /destination && python run.py']
Но я получаю эту ошибку
[Errno 2] No such file or directory: 'docker-compose': 'docker-compose'
Я попытался выполнить ту же команду в режиме bash на клиентском контейнере и получил
bash: docker-compose: command not found
. Я думал о том, чтобы сделать динд, но это действительно необходимо? Эта команда работает на моем хост-компьютере docker-compose run --rm service2 python apples.py shell
. Как правильно подходить, мне нужно в любое время запросить код возврата процесса, выполняющегося в контейнере service2, из service1. Я объявил бридж-сеть. Спасибо