[英]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.