我会尽量简单地解释这一点。
我有一个伪造的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容器,而在第二个实例中没有一个。
这里发生什么事情?
发布于 2018-05-02 17:24:13
我发现了错误。我传入了-it选项,该选项由于the input device is not a TTY而导致进程失败。我要做的就是把它拿出来。
https://stackoverflow.com/questions/50134704
复制相似问题