2

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

我还有一个与队列相关的后台进程。这个过程有一个无限循环,这就是我想在后台运行它的原因。

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

flask run --host=0.0.0.0 --port 5000. 我正在使用commanddocker-compose 中的选项。

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

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

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

是否有任何正确的方法可以在容器启动时运行这两个命令?

4

3 回答 3

3

创建一个script.sh

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

并将其设置为您的命令

于 2019-10-03T13:54:33.800 回答
0

尝试添加

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

在 Docker 文件中

于 2019-10-03T14:02:50.180 回答
0

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

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

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

于 2019-10-04T10:28:43.460 回答