簡體   English   中英

想要從單個 Z3254677A7917C6C01F55212F86C5 運行 python 腳本和 Flask api

[英]Want to run python script and Flask api from single Dockerfile

我正在嘗試使用以下 docker 文件創建容器。 由於它將執行最后一個 CMD,它忽略CMD ["sh", "-c", "python3 run_scheduler.py --config=${config}"] 有沒有辦法從單個 docker 文件運行兩者。 Also, is it possible to pass ${config} argument to flask api in CMD ["gunicorn", "--bind", "0.0.0.0:5000", "run_api:application", "&"]

FROM python:3.8

LABEL version="0.1"

WORKDIR /app
COPY . /app

ARG config=dev
RUN  pip install -r requirements.txt
EXPOSE 5000
CMD ["sh", "-c", "python3 run_scheduler.py --config=${config}"]
CMD ["gunicorn",  "--bind", "0.0.0.0:5000",  "run_api:application", "&"]

如評論中所述,您可以在 CMD 中傳遞 2 行 bash 腳本。 然而,這可能會導致問題。 Docker 並不是真的要在單個容器中運行多個進程。 我已經在您的第二個 CMD 中看到了“&”參數。 我猜你遇到了第二個進程沒有運行的問題,所以你試圖將它推到后台。

Docker推薦的解決方案是在容器內運行supervisordhttps://docs.docker.com/config/containers/multi-service_container/

從命名概念我想你可以用 Flask-APScheduler https://github.com/viniciuschiele/flask-apscheduler解決你的問題這樣你就可以擺脫第二個邊車腳本。

最后你問:

另外,是否可以將 ${config} 參數傳遞給 flask api

答案是肯定的。 在 Dockerfile 中聲明ENV ,如下所示:

FROM python:3.8
...
...
ENV config foo
...
CMD ["whatever_command", "--option", "${config}"]

這樣"${config}"將被替換為值foo

暫無
暫無

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

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