簡體   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