bash脚本未移动到下一个命令
我有一个简单的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
#!/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。谢谢你的帮助!