Docker image error: "/bin/sh: 1: [python,: not found"
Question:
I’m building a new Docker image based on the standard Ubuntu 14.04 image.
Here’s my Dockerfile:
FROM ubuntu:14.04
RUN apt-get update -y
RUN apt-get install -y nginx git python-setuptools python-dev
RUN easy_install pip
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt # only 'django' for now
ENV projectname myproject
EXPOSE 80 8000
WORKDIR ${projectname}
CMD ['python', 'manage.py', 'runserver', '0.0.0.0:80']
When I try to run this image, I get this error…
/bin/sh: 1: [python,: not found
But if I open a shell when running the image, running python
opens the interactive prompt as expected.
Why can’t I invoke python
through CMD
in the Dockerfile?
Answers:
Use "
instead of '
in CMD. (Documentation)
I have resolved my issue on my Mac by changing
CMD ["python", "app.py"]
to
CMD python app.py
I had the same error. But in my case it was syntax error in command.
I had a missing comma ","
CMD ["python" "app.py"]
instead of
CMD ["python", "app.py"]
Validating the yaml file format can help in this case. Can use any online yaml validator.
I had similar issue, but I didn’t have any '
or "
chars in docker run command in my case.
But I found the solution to repair that issue and maybe will help you in similar case in future:
- Clear all unnecessary whitespace chars from Dockerfile
- Clear all cached images from this Dockerfile
- Build and run new image
If you don’t clear cached images, docker will use cached image with some crazy whitespace chars, which was created the same error message like the subject of the thread.
Well, I had the same issue, all I had to do was to add a comma between the elements in your CMD array.
Most devs use visual studio code to write docker file and the official docker extension does not indicate an array if a comma is not added.
Also, use double quotes always.
you must use " " doubleQoute for CMD ["python"]
I’m building a new Docker image based on the standard Ubuntu 14.04 image.
Here’s my Dockerfile:
FROM ubuntu:14.04
RUN apt-get update -y
RUN apt-get install -y nginx git python-setuptools python-dev
RUN easy_install pip
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt # only 'django' for now
ENV projectname myproject
EXPOSE 80 8000
WORKDIR ${projectname}
CMD ['python', 'manage.py', 'runserver', '0.0.0.0:80']
When I try to run this image, I get this error…
/bin/sh: 1: [python,: not found
But if I open a shell when running the image, running python
opens the interactive prompt as expected.
Why can’t I invoke python
through CMD
in the Dockerfile?
Use "
instead of '
in CMD. (Documentation)
I have resolved my issue on my Mac by changing
CMD ["python", "app.py"]
to
CMD python app.py
I had the same error. But in my case it was syntax error in command.
I had a missing comma ","
CMD ["python" "app.py"]
instead of
CMD ["python", "app.py"]
Validating the yaml file format can help in this case. Can use any online yaml validator.
I had similar issue, but I didn’t have any '
or "
chars in docker run command in my case.
But I found the solution to repair that issue and maybe will help you in similar case in future:
- Clear all unnecessary whitespace chars from Dockerfile
- Clear all cached images from this Dockerfile
- Build and run new image
If you don’t clear cached images, docker will use cached image with some crazy whitespace chars, which was created the same error message like the subject of the thread.
Well, I had the same issue, all I had to do was to add a comma between the elements in your CMD array.
Most devs use visual studio code to write docker file and the official docker extension does not indicate an array if a comma is not added.
Also, use double quotes always.
you must use " " doubleQoute for CMD ["python"]