【发布时间】:2020-06-22 18:42:45
【问题描述】:
我有以下 shell 脚本 script.sh。 run_api (Rest api) 和 run_scheduler 都在同一路径。 run_api 端点工作正常,但 run_scheduler.py 没有执行。
#!/bin/bash
exec gunicorn --reload --bind 0.0.0.0:5000 run_api:application
python run_scheduler.py
以下是镜像的 docker 文件。
FROM python:3.8
WORKDIR /app
COPY . /app
RUN chmod +x script.sh
CMD ["sh", "script.sh"]
并且 以下是 docker run commond
docker run -itd --name test -p 8080:5000 image:latest
【问题讨论】:
-
你遇到了什么错误?
-
没有错误,它不会执行.. 如果我评论
exec gunicorn --reload --bind 0.0.0.0:5000 run_api:application然后我得到错误':[Errno 2] 没有这样的文件或目录.py。而且我的代码中没有这样的模块。 -
通常,如果您需要两个独立的进程(一个 Web 服务器和一个调度程序),最好在两个独立的容器中运行它们。您可以使用相同的映像,但在映像名称后提供替代命令(覆盖 Dockerfile
CMD)。你试过这个吗? -
您的环境设置似乎有问题...
-
如果我在单独的容器中运行,两者都可以正常工作。即使我只运行
exec gunicorn --reload --bind 0.0.0.0:5000 run_api:application然后登录到正在运行的容器,并且运行python run_scheduler.py它运行良好。当两者都在一个容器中时,问题就来了。我有点困惑为什么这是不可能的。
标签: python docker shell gunicorn