如何将requirements.txt和setup.py文件从父文件夹复制到docker镜像中

问题描述 投票:0回答:1

这是我的项目的目录结构:Directory tree

从后端文件夹中,我想创建一个 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 .
我有这个输出:Output from docker build

也许你可以帮助解决这个问题。谢谢

您可以查看我上面测试的

Dockerfile

docker dockerfile setup.py requirements.txt
1个回答
0
投票

您的

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 .

两种方法都可以帮助您解决尝试从构建上下文外部复制文件的问题。

© www.soinside.com 2019 - 2024. All rights reserved.