在Docker中的入口点运行命令不会输出文件错误

时间:2018-08-09 16:01:12

标签: docker

在一个简单的dockerfile上:

FROM python:3
ENV PYTHONUNBUFFERED 1
WORKDIR /code/

如果我跑步:

docker build -t my_image .
docker run -v ~/Downloads/data/:/home -it -d my_image # mount data folder inside home
docker exec -it container_id  sh -c  "python script.py -i /home/db.sqlite"

一切正常。但是我想在运行时运行script.py,以便不需要exec命令。

所以我添加到了dockerfile中:

ENTRYPOINT ["python script.py -i /home/db.sqlite"]

但是当我现在运行容器时,它失败,并在python script.py出现文件或文件夹未找到错误

1 个答案:

答案 0 :(得分:1)

我认为问题在于ENTRYPOINT语法的工作方式。您使用的是exec-form,但找不到二进制文件(它使用整个命令行作为二进制文件的路径)。

来自https://docs.docker.com/engine/reference/builder/#entrypoint

  

ENTRYPOINT有两种形式:
   ENTRYPOINT [“ executable”,“ param1”,   “ param2”](执行表格,首选)
  ENTRYPOINT命令param1 param2   (外壳形式)

所以尝试之一:

ENTRYPOINT ["/path/to/python", "script.py", "-i", "/home/db.sqlite"]

ENTRYPOINT python script.py -i /home/db.sqlite