2
votes

I have a Dockerfile that uses

CMD ['/usr/local/bin/gunicorn', '-b 0.0.0.0:8000', 'myapp.wsgi']

But when I run the container using docker run --rm myimage:latest I get an error:

/bin/sh: 1: [/usr/local/bin/gunicorn,: not found

Yet, when I run docker run --rm -it myimage:latest /bin/bash to go into the container, I can see that gunicorn runs, and running which gunicorn returns the correct path for gunicorn. Why is it failing to run?

Similarly, I planned on adding

ENTRYPOINT ['/entrypoint.sh']

to my Dockerfile, but when I run that, I get the error

/bin/sh: 1: /bin/sh: [/entrypoint.sh]: not found

The entrypoint.sh file contains:

#! /bin/bash
echo 'Starting app...'
cd /app || exit;
python manage.py migrate;

So why does it keep saying command not found when all the commands are there?

1

1 Answers

3
votes

The issue here is the quotes. Use double " quotes.

From Docker Documentation:

The exec form is parsed as a JSON array, which means that you must use double-quotes (“) around words not single-quotes (‘).

This is applicable for other instructions such as RUN, LABEL, ENV, ENTRYPOINT and VOLUME.