Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash脚本未移动到下一个命令_Bash_Docker - Fatal编程技术网

bash脚本未移动到下一个命令

bash脚本未移动到下一个命令,bash,docker,Bash,Docker,我有一个简单的bash脚本,如下所示: #!/bin/bash gunicorn --bind 0.0.0.0:5000 --chdir server/ run:app -w 2 supervisord -c /usr/src/server/supervisord.conf -n 脚本应该启动gunicorn服务,然后启动supervisor。但是,当调用脚本时,只启动gunciron服务,而不启动supervisor服务 正在从Dockerfile调用脚本,如下所示: FROM pytho

我有一个简单的bash脚本,如下所示:

#!/bin/bash

gunicorn --bind 0.0.0.0:5000 --chdir server/ run:app -w 2
supervisord -c /usr/src/server/supervisord.conf -n
脚本应该启动gunicorn服务,然后启动supervisor。但是,当调用脚本时,只启动gunciron服务,而不启动supervisor服务

正在从Dockerfile调用脚本,如下所示:

FROM python:3.8.1

RUN apt-get update && \
    apt-get -y install netcat && \
    apt-get clean
RUN apt-get install -y libpq-dev
RUN apt-get install -y redis-server

COPY . usr/src/server
WORKDIR /usr/src

RUN pip install -r server/requirements.txt
RUN chmod +x /usr/src/server/start.sh
CMD ["/usr/src/server/start.sh"]

我也尝试过在两个命令之间使用
&&
分隔符,但这似乎没有什么区别。

第一个命令运行完毕后,bash脚本将转到下一个命令<当
gunicorn
退出时,code>supervisord将启动

要在后台运行Gunicorn,请传递
--daemon
选项

#!/bin/bash

gunicorn --bind 0.0.0.0:5000 --chdir server/ run:app -w 2 --daemon
supervisord -c /usr/src/server/supervisord.conf -n

然而,这对我来说没有多大意义。既然你是主管,为什么你不从主管那里管理Gunicorn?启动守护程序是主管的工作。

gunicorn是否应该在后台运行并立即返回?您可以将
&
放在gunicorn系列的末尾。您知道为什么每个容器不应该运行多个服务吗?@emix我假设这是为了降低容器发生故障的风险?我的主管正在启动一名rq工作人员,根据传入的数据进行计算,而gunciorn正在为flask应用程序提供服务。这似乎是合乎逻辑的,一个不会开始没有其他任何时候,需要耦合,这就是为什么我决定把2在一起。这是一个问题吗?@Anubhav它应该有效,但不被认为是好的做法。nginx和gunicorn通常应该在单独的容器中运行。是的,你是对的。我应该从主管内部管理gunicorn。谢谢你的帮助!