[英]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推薦的解決方案是在容器內運行supervisord
: https://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.