繁体   English   中英

如何使用 docker-compose 在 Docker 中正确安装自定义 package?

[英]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 包。

您可以执行以下任一操作以使其工作:

  1. 运行导出 PYTHONPATH="$PYTHONPATH:/api"
  2. ENV PYTHONPATH="$PYTHONPATH:/api"

此外,您的 Dockerfile 应该在 api 级别,它将无法在当前目录结构中查找它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM