如何在启动时在Docker容器上运行多个命令?

时间:2019-10-03 13:51:35

标签: python docker flask docker-compose docker-entrypoint

我有 Flask 应用程序容器,该容器必须在端口 5000 上运行。

我还有一个与队列有关的后台进程。这个过程有一个无限循环,这就是为什么我要在后台运行它。

我正在使用docker-compose.yml文件创建容器。现在,我只能运行一个命令来配置烧瓶服务器。

flask run --host=0.0.0.0 --port 5000。我在docker-compose中使用了command选项。

这是我要在后台python app/workload/services/queue_services.py > qlog.txt中运行的命令。

当我在command中首先放置后台命令时,服务器没有启动,我只看到后台脚本的输出。

当我首先使用flask run命令时,后台脚本根本没有启动。

在容器启动时,是否有适当的方法来运行这两个命令?

3 个答案:

答案 0 :(得分:3)

创建一个script.sh

#!/bin/bash
python app/workload/services/queue_services.py > qlog.txt &
flask run --host=0.0.0.0 --port 5000

并将其设置为您的命令

答案 1 :(得分:0)

尝试添加

CMD ["gunicorn", "--bind=0.0.0.0:5000", "--workers=1", "wsgi"]

在DockerFile中

答案 2 :(得分:0)

另一种方法可能是使用诸如supervisor之类的程序。这样,我们可以将其扩展到多种服务,而无需修改Dockerfile

https://docs.docker.com/config/containers/multi-service_container/

我用supervisor和jre编译了一个映像。 https://hub.docker.com/r/palashgoel/supervisord-jre