简体   繁体   中英

executing commands in containers from within a container using docker-compose up vs docker-compose run

I'll try to explain this as simply as possible.

I have a dockerised python app. Within this python app at some point I try to run a docker command in another (libreoffice) container as such:

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)

I end my python app's Dockerfile with a command which starts the server:

CMD python3 -m app.run_app

What is interesting is when I start the python app like this it works fine:

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

But when I start it just using docker-compose up , the libreoffice container is never called. I am sure of it because when I do docker ps -a in the first instance a libreoffice container has been created while in the second there is none.

What is going on here?

I found the error. I was passing in the -it option which was failing the process because of the input device is not a TTY . All I had to do was take it out...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM