gpt4 book ai didi

docker - Dockerfile找不到复制的文件夹

转载 作者:行者123 更新时间:2023-12-02 21:09:35 25 4
gpt4 key购买 nike

这很奇怪。

我有这样的结构

app/
CLI/
someOtherFolder/
thingIwantToRun.py
tests.Dockerfile
Dockerfile
README.md
gunicorn.conf

这是我的 Dockerfile的样子
FROM python:3.6

WORKDIR /app

COPY ./requirements.txt /.requirements.txt
# Install any needed packages specified in requirements.txt
RUN pip install -r /.requirements.txt
COPY gunicorn.conf /gunicorn.conf

COPY . /app



EXPOSE 8000


RUN ls

ENV FLASK_ENV=development

CMD ["python ./someOtherFolder/thingIwantToRun.py"]

当我启动容器时,这给了我这个错误-
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"ls ./someOtherFolder\": stat ls ./someOtherFolder: no such file or directory": unknown.

当我将 CMD命令更改为其他不会失败的命令时,我跳入了容器,我看到我的文件夹确实在那里。

当我在Dockerfile中添加 RUN ls时,仍然可以看到我的文件夹。

如果存在,为什么我不能运行它?

更新-

如果我将 thingIWantToRun.py移到顶层文件夹并将Docker CMD更改为
CMD [python thingIWantToRun.py]
我看到同样的问题。但是,我可以将ssh放入容器中并验证文件是否存在。

最佳答案

问题是您如何运行CMD命令。是这样的:

CMD ["executable", "param1", "param2"]

引用: https://docs.docker.com/engine/reference/builder/#cmd

从这个意义上说,实际命令应该是
CMD ["python", "./someOtherFolder/thingIwantToRun.py"]

Docker尝试找到 executable部分(数组的第一项)并运行它,并将其余的数组项( param1, param2)传递给它。如果您更靠近错误打印
... process caused "exec: \"ls ./someOtherFolder\": stat ls ./someOtherFolder: no such file or directory"

它说 ls ./someOtherFolder不是文件或目录,并且不能 exec它!数组的第一项是可执行文件!
这里 ls应该是 ./someOtherFolder命令数组的第一项,而 CMD应该是数组的第二项。

关于docker - Dockerfile找不到复制的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55608162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com