【发布时间】:2022-01-26 04:08:44
【问题描述】:
我有一个从docker-compose.yml 运行的 python 图像。我将 python 代码挂载为一个卷,因此我不需要在每次代码更改时重建容器:
docker-compose.yml
services:
python:
container_name: py
build: .
volumes:
- ./app:/usr/src/app
env_file:
- .env
working_dir: /usr/src/app
command: python ./core/main.py
其中build: . 指的是同一目录中的Dockerfile。
app/ 是 python 根目录,包含标准的requirements.txt。问题是我无法在 docker build 期间使用 RUN pip install -r requirements.txt 中的 RUN pip install -r requirements.txt 安装依赖项在 requirements.txt 中,因为该卷尚未安装。
我似乎无法解决这个问题,这让我觉得我没有练习 docker/docker-compose 的最佳用法。
我该如何解决这个问题?
Dockerfile
FROM python:3.7.12-slim-bullseye
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
RUN pip install -r requirements.txt
ENV PYTHONBUFFERED 1
正如预期的那样,运行docker compose build py 会导致:
ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
【问题讨论】:
-
告诉我们你的
Dockerfile! -
@KlausD。更新问题
Dockerfile -
您需要在
ENTRYPOINT中包含pip install。 -
没有 Docker 的 Python 虚拟环境可能会成为更好的日常开发环境。如果您尝试使用主机代码运行未经修改的
python映像,Docker 只是在堆栈中间添加了一个您不想要的隔离层。 -
在使用之前,您必须将
COPY和requirements.txt放入图像中。实际上,您并没有将任何内容复制到图像中。
标签: python docker docker-compose dockerfile requirements.txt