簡體   English   中英

啟動時如何在 docker 容器上運行多個命令?

[英]How to run multiple commands on docker container on startup?

我有Flask應用程序容器,它必須在端口5000上運行。

我還有一個與隊列相關的后台進程。 這個過程有一個無限循環,這就是我想在后台運行它的原因。

我正在使用 docker-compose.yml 文件來創建容器。 目前,我只能運行一個命令來啟動 flask 服務器。

flask run --host=0.0.0.0 --port 5000 我正在使用 docker-compose 中的command選項。

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

當我將后台命令放在command中時,服務器沒有啟動,我只看到后台腳本中的 output 。

當我先放flask run命令時,后台腳本根本沒有啟動。

是否有任何正確的方法可以在容器啟動時運行這兩個命令?

創建一個script.sh

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

並將其設置為您的命令

嘗試添加

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

在 DockerFile

另一種方法可能是使用像 supervisord 這樣的程序。 這樣,我們可以將其擴展到多個服務,而無需修改 Dockerfile

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

我用 supervisord 和 jre 編譯了一個圖像。 https://hub.docker.com/r/palashgoel/supervisord-jre

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM