这是我的Dockerfile代码:
FROM python:3.8
WORKDIR /py-api-yahoo-finance
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY api_yahoo .这是我的docker-compose.yml文件:
version: "3.8"
services:
py-api-yahoo-finance:
build: .
ports:
- "5000:5000"
container_name: api_yahoo
command: python manage.py runserver 0.0.0.0:5000我尝试通过命令构建映像:,然后遇到以下错误:
failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount974641243/Dockerfile: no such file or directory
ERROR: Service 'py-api-yahoo-finance' failed to build : Build failed我试着去学习我在网上找到的所有教程,但是没有一个答案对我有帮助。我很感谢你的帮助谢谢。
发布于 2022-12-04 14:02:59
看起来问题可能与Dockerfile中指定的路径有关。在WORKDIR命令中,您指定/py-api-yahoo作为工作目录,但在COPY命令中,您要从当前目录(.)复制文件。到工作目录。
这意味着在工作目录中找不到requirements.txt文件和api_yahoo目录,构建将失败。
要解决这个问题,可以在COPY命令中指定指向requirements.txt文件和api_yahoo目录的完整路径,也可以将Dockerfile移动到包含requirements.txt文件和api_yahoo目录的目录中,然后从那里运行Dockerfile命令。这样,COPY命令就能够找到当前目录中的文件。
下面是Dockerfile和docker-compose.yml文件如何处理这些更改的示例:
Dockerfile:
FROM python:3.8
WORKDIR /py-api-yahoo-finance
COPY requirements.txt /py-api-yahoo-finance/requirements.txt
RUN pip3 install -r requirements.txt
COPY api_yahoo /py-api-yahoo-finance/api_yahoodocker-compose.yml:
version: "3.8"
services:
py-api-yahoo-finance:
build: .
ports:
- "5000:5000"
container_name: api_yahoo
command: python manage.py runserver 0.0.0.0:5000确保从包含Dockerfile、requirements.txt文件和api_yahoo目录的目录中运行Dockerfile构建命令。这将修复问题,并使映像能够成功构建。
编辑
在docker-come.yml文件中指定的路径可能有问题。在build部分中,您将指定当前目录(.)作为Dockerfile的路径,但是在运行Dockerfile命令时,Dockerfile可能不在当前目录中。
要解决这个问题,您可以在docker-compose.yml文件的build部分中指定Dockerfile的完整路径。这样,坞-组合将能够找到Dockerfile并成功地构建映像.
下面是您的docker-compose.yml文件如何处理进行此更改的示例:
version: "3.8"
services:
py-api-yahoo-finance:
build: /path/to/Dockerfile
ports:
- "5000:5000"
container_name: api_yahoo
command: python manage.py runserver 0.0.0.0:5000确保在build部分中指定到Dockerfile的正确路径。这将修复此问题,并允许您成功地构建映像。
如果您继续出现问题,检查Dockerfile、requirements.txt文件和api_yahoo目录的权限可能会很有帮助,以确保这些权限可由运行Dockerfile命令的用户读取。您可以使用ls -l命令检查这些文件和目录的权限,并在必要时使用chmod命令更改权限。
例如,如果Dockerfile的权限设置为-rw-,则可以使用以下命令使每个人都能读懂它:
chmod a+r Dockerfile这将为Dockerfile上的所有用户添加读取权限,您应该能够成功地构建映像。
https://stackoverflow.com/questions/74677300
复制相似问题