场景:一个fastapi项目,根目录下有几个项目, 还有个requirements.txt 文件。 我要把其中要给项目用docker起来。 我在项目中增加Dockerfile和docker-compose文件,dockerfile中需要复制requirements.txt到容器中,然后安装依赖,我就Copy ../requirements.txt 。然后docker-compose up -d ,报错 告诉我找不到requirements.txt。
目录结构:
root:
projectA:
dockerfile
docker-compose.yaml
projectB:
....
requirements.txt
原因:因为dockerfile有个上下文环境,所以无法使用“../”寻找环境之外的路径。
解决办法:
docker-compse.yml
version: "3"
services:
projecta:
container_name: projecta
build:
context: ../ # 这里把当前路径的上一级加到上下文环境中
dockerfile: ./backend/Dockerfile #指定dockerfile
stdin_open: true
tty: true
ports:
- '80:80'
expose:
- '80'
------------------------------------------------------------------------------
Dockerfile
FROM python:3.9.17
WORKDIR /code
#下面就可以使用./找当前文件
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./projectrA /code/app
CMD ["uvicorn", "app.api:app", "--host", "0.0.0.0", "--port", "80"]