@Kamral
ПРОГРАММИСТ

Почему не читает python файл ( /bin/sh: 1: [python,: not found) в docker?

#Dockerfile
FROM python:3.6
RUN mkdir -p /usr/src/app/
WORKDIR /usr/src/app/
COPY . /usr/src/app/

CMD ["python", "app.py"]

#app.py
print('hello world')

выходит ошибка
  • Вопрос задан
  • 2786 просмотров
Пригласить эксперта
Ответы на вопрос 3
shurshur
@shurshur
Сисадмин, просто сисадмин...
У CMD есть 3 формы:

1. CMD ["executable","param1","param2"] - тут надо полный путь к executable
2. CMD ["param1","param2"] - тут это параметры ENTRYPOINT
3. CMD command param1 param2 - тут это просто команда для shell

Судя по ошибке, используется третья(!) форма, shell выкусывает кавычки и остаётся:

[python, app.py]

Жырным показал реальное имя команды, которая передаётся в shell.

Почему так? А вот не знаю. Старый докер?

У меня тест с такими исходными данными был успешен, несмотря на то, что версия у меня не сказать чтобы новая (17.05.0-ce).

spoiler
shurik@ubuntu ~/dockers/test2 $ docker build -t pythontest .
Sending build context to Docker daemon  3.072kB
Step 1/5 : FROM python:3.6
 ---> 2dfb6d103623
Step 2/5 : RUN mkdir -p /usr/src/app/
 ---> Running in 09f00e2cd7c0
 ---> f7bf180ffc62
Removing intermediate container 09f00e2cd7c0
Step 3/5 : WORKDIR /usr/src/app/
 ---> a35eb6c2b4d2                                                                                                                                                                                                                                                            
Removing intermediate container 28981d13a074                                                                                                                                                                                                                                  
Step 4/5 : COPY . /usr/src/app/                                                                                                                                                                                                                                               
 ---> bf2cafb07143                                                                                                                                                                                                                                                            
Removing intermediate container 0553c72905cb                                                                                                                                                                                                                                  
Step 5/5 : CMD python app.py                                                                                                                                                                                                                                                  
 ---> Running in 0e57967e6d8f                                                                                                                                                                                                                                                 
 ---> 5157a21343e9                                                                                                                                                                                                                                                            
Removing intermediate container 0e57967e6d8f                                                                                                                                                                                                                                  
Successfully built 5157a21343e9                                                                                                                                                                                                                                               
Successfully tagged pythontest:latest                                                                                                                                                                                                                                         
shurik@ubuntu ~/dockers/test2 $ docker run -it --rm pythontest                                                                                                                                                                                                                
hello world                                                                                                                                                                                                                                                                   
shurik@ubuntu ~/dockers/test2 $
Ответ написан
Комментировать
paran0id
@paran0id
Умный, но ленивый
попробуйте CMD ["python3", "app.py"]
Ответ написан
Комментировать
@dreamer-1978
CMD нужно прописывать двойные кавычки а не одинарные!!
нужно "" - вместо ''
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы