У меня есть файл для создания Docker, который запускает базу данных, веб-сервер и рабочий.Нашим пользователям, возможно, понадобится запустить дополнительных работников, и у меня это работает (используя "... up --scale worker = x").Пользователь также может захотеть остановить конкретного работника.Здесь я сталкиваюсь с неприятностями.В командной строке я могу использовать «docker stop worker_name», и это работает нормально, но не тогда, когда я вызываю его из Python, используя подпроцесс.Я видел ссылку на использование docker-compose stop, но разве docker-compose не подходит к вашему файлу yml?Как вы могли бы использовать его, чтобы остановить один контейнер?Мы используем Python 3.7.1 в Ubuntu 18.04.Версия Docker 18.06.
Вот фрагмент кода из Python для остановки рабочего.
kwargs - { 'shell': True,
'stdout': subprocess.PIPE,
'stderr': subprocess.PIPE,
'universal_newlines': True
}
worker_name = 'worker_1'
cmd = f'docker stop {worker_name}'
proc = subprocess.Popen(cmd, **kwargs)
out, err = proc.communicate()
self.logger.info(f'out = {out}')
self.logger.info(f'err = {err}')