Dockerfile在本地运行正常但在Google Cloud Run上失败

0 投票
1 回答
85 浏览
提问于 2025-04-14 17:01

我有一个Dockerfile,下面是它的内容:

FROM --platform=linux/amd64 prefecthq/prefect:2-python3.12

RUN apt-get update && apt-get -y install libpq-dev gcc
RUN pip install --upgrade pip
RUN pip install pipenv

ENV PREFECT_API_URL="foo"
ENV PREFECT_API_KEY="bar"

WORKDIR /app

COPY Pipfile Pipfile
COPY Pipfile.lock Pipfile.lock

RUN pipenv install --deploy --ignore-pipfile

COPY . .

CMD ["pipenv", "run", "python", "src/cdk_flow/cdk_delta_flow.py"]

这个文件在本地构建和运行都没问题,但当我把它推送到Google Cloud Run(使用Prefect来推送)时,它运行失败,出现了以下错误。

Traceback (most recent call last):
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/app/src/cdk_flow/cdk_delta_flow.py", line 7, in <module>
    from src.cdk_flow.cdk_common_tasks import (
  File "/app/src/cdk_flow/cdk_common_tasks.py", line 3, in <module>
    import pandas as pd
ModuleNotFoundError: No module named 'pandas'

为什么这个Dockerfile在本地能运行,但在Google Cloud Run上却找不到某个模块呢?

1 个回答

0

在Dockerfile里面使用Pipenv时,和Google Cloud Run不太兼容。为了避免出现找不到模块的错误,我们需要在Dockerfile里声明

ENV PIPENV_VENV_IN_PROJECT 1。更多详细信息可以查看这个讨论帖

撰写回答