首页 > 解决方案 > GCP 上的 Docker 映像:在哪里复制 Python 脚本所需的文件

问题描述

我有一个 Python 脚本,它需要 OpenCV 的 haarcascade.xml 文件来进行面部识别。我使用以下 Dockerfile 在 Kubernetes(Google Cloud Platform)上成功构建并推送了 Docker 映像:

FROM python:3.7

ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./

RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/*


RUN sudo apt-get update && sudo apt-get install -y apt-utils build-essential cmake && sudo apt-get install -y libgtk-3-dev && sudo apt-get install -y libboost-all-dev && sudo apt-get install -y default-libmysqlclient-dev

RUN pip install setuptools mysqlclient cmake Flask gunicorn pybase64 google-cloud-vision google-cloud-storage protobuf nltk fuzzywuzzy PyPDF2 numpy python-csv google-cloud-language pandas SQLAlchemy PyMySQL pytz Unidecode torch tensorflow==1.15 transformers imutils scikit-learn scikit-image scipy==1.4.1 opencv-python text2num sklearn
RUN pip install dlib

COPY app.py ./app.py
COPY haarcascade_frontalface_default.xml ./haarcascade_frontalface_default.xml

CMD ["python", "./app.py"]

在 Python 笔记本中,我有没有路径的 haarcascade.xml 文件:

def face_recog(image):
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    img = cv2.imread(image)

pod 运行平稳,没有错误,没有重新启动,但是这部分代码由于“丢失”haarcascade 文件而无法正常工作。

我知道我有两个选择:

  1. 将 haarcascade 的完整路径放在 notebook 中(我不知道给出的是 Docker 镜像)
  2. 修复 Dockerfile 中的 COPY haarcascade.xml 文件,以便 Python 脚本找到它。

任何帮助表示赞赏。

标签: pythondockerkubernetesgoogle-cloud-platformdockerfile

解决方案


推荐阅读