Anubhav
Anubhav

Reputation: 585

bash script not moving onto next command

I have a simple bash script as follows:

#!/bin/bash

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

The script is supposed to launch the gunicorn service and then start supervisor. However when the script is called, only the gunciron service is started and not the supervisor service.

The script is being called as follows from a 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"]

I have tried using the && separator between the 2 commands as well, but that doesn't seem to make a difference.

Upvotes: 0

Views: 313

Answers (1)

The bash script will move on to the next command when the first command has finished running. supervisord will start when gunicorn exits.

To run Gunicorn in the background, pass the --daemon option.

#!/bin/bash

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

However, this doesn't make much sense to me. Since you're running Supervisor, why aren't you running Gunicorn from Supervisor? Starting daemons is Supervisor's job.

Upvotes: 1

Related Questions