我会尽可能简单地解释一下。
我有一个dockerised python应用程序。在这个python应用程序中,我尝试在另一个(libreoffice)容器中运行docker命令:
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)
我用一个启动服务器的命令结束我的python应用程序的Dockerfile:
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容器时,在第二个实例中没有。
这里发生了什么?
答案 0 :(得分:0)
我发现了错误。由于-it
,我传递了the input device is not a TTY
选项,导致流程失败。我所要做的就是把它拿出来......