выполнение команд в контейнерах изнутри контейнера с использованием docker-compose up или docker-compose run - PullRequest
0 голосов
/ 02 мая 2018

Я постараюсь объяснить это как можно проще.

У меня есть приложение на python для Python. В какой-то момент в этом приложении на Python я пытаюсь запустить команду docker в другом (libreoffice) контейнере следующим образом:

import subprocess
file_path = 'path_to_file'
args = ['docker', 'run', '-it', '-v', '/tmp:/tmp',
'lcrea/libreoffice-headless', '--headless', '--convert-to', 'pdf', file_path,
'--outdir', '/tmp'] 

process = subprocess.run(args,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        timeout=timeout)

Я заканчиваю Dockerfile моего приложения на python командой, которая запускает сервер:

CMD python3 -m app.run_app

Что интересно, когда я запускаю приложение на python, оно работает нормально:

docker-compose run -p 9090:9090 backend /bin/bash
root@74430c3f1f0c:/src python3 -m app.run_app

Но когда я запускаю его просто с помощью docker-compose up, контейнер libreoffice никогда не вызывается. Я уверен в этом, потому что когда я выполняю docker ps -a в первом случае, создается контейнер libreoffice, а во втором его нет.

Что здесь происходит?

1 Ответ

0 голосов
/ 02 мая 2018

Я нашел ошибку. Я передавал опцию -it, которая не выполнялась из-за the input device is not a TTY. Все, что мне нужно было сделать, это вынуть это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...