[英]How to correctly install custom package in Docker with docker-compose?
我正在构建一个 flask api 并想创建一个 docker 图像。 但是,当我运行 docker-compose (构建后)时,它找不到模块。
错误:
api_1 | Traceback (most recent call last):
api_1 | File "app.py", line 6, in <module>
api_1 | from api.classify.classify import get_prediction
api_1 | ModuleNotFoundError: No module named 'api'
我的文件夹结构如下所示:
- api
-- classify
--- classify.py
-- app.py
-- Dockerfile
-- requirements.txt
-- setup.py
setup.py 看起来像这样:
from setuptools import setup, find_packages
setup(
name='image_api',
keywords='',
version='0.1',
packages=find_packages()
)
Dockerfile 看起来像这样:
FROM python:3
WORKDIR /user/src/app
ENV PYTHONPATH=/api
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN python setup.py install
CMD ["python", "app.py"]
在构建 Docker 映像时,如何解决此问题以及安装自定义包的最佳做法是什么?
你永远不应该像这样覆盖 PYTHONPATH,而不是 append 你的路径,否则系统将找不到安装的 Python 包。
您可以执行以下任一操作以使其工作:
此外,您的 Dockerfile 应该在 api 级别,它将无法在当前目录结构中查找它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.