从后端文件夹中,我想创建一个 Docker 映像来加载父文件夹中的
setup.py
和 requirements.txt
文件。此外,我想加载也在父文件夹中的 src/
文件夹。以下是setup.py
的内容:https://github.com/ahmedaao/design-autonomous-car/blob/master/setup.py
这是fastapi_app.py
的内容:https://github.com/ahmedaao/design-autonomous-car/blob/master/backend_app.py
这是
Dockerfile
:
FROM python:3.10.12
WORKDIR /app
COPY ./fastapi_app.py /app/
COPY ./../requirements.txt /app/
COPY ./../src/ /app/src
COPY ./../setup.py /app/
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD ["uvicorn", "fastapi_app:app", "--host", "0.0.0.0", "--port", "8000"]
当我尝试使用以下方式构建图像时:
sudo docker build -t test .
我有这个输出:
也许你可以帮助解决这个问题。谢谢
您可以查看我上面测试的
Dockerfile
。
您的
docker build
命令是从 backend/
目录运行的。从项目根目录运行它可能更有意义。
如果您的项目结构如下(来自您的屏幕截图):
├── backend
│ ├── Dockerfile
│ └── fastapi_app.py
├── requirements.txt
├── setup.py
└── src
├── __init__.py
└── metrics.py
那么也许像这样表述你的
Dockerfile
可能更有意义:
FROM python:3.10.12
WORKDIR /app
COPY backend/fastapi_app.py /app/
COPY requirements.txt /app/
COPY src/ /app/src
COPY setup.py /app/
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD ["uvicorn", "fastapi_app:app", "--host", "0.0.0.0", "--port", "8000"]
然后您可以从项目根构建图像:
docker build -f backend/Dockerfile -t test .
如果您要在项目中拥有多个
Dockerfile
(也许您也会有一个 frontend/Dockerfile
?),这将是一个好方法。
或者,如果只有一个图像,您可以将
Dockerfile
移动到项目根目录,然后您的构建命令将简化为:
docker build -t test .
两种方法都可以帮助您解决尝试从构建上下文外部复制文件的问题。