【问题标题】:gsutil cp in dockerfile does not copy filedockerfile 中的 gsutil cp 不复制文件
【发布时间】:2021-06-18 05:09:12
【问题描述】:

我正在尝试在 Cloud Run 上部署我的 FastAPI 应用程序,并且我想在 Dockerfile 中复制我的 GCS 存储桶上的一个文件并在 API 中读取它。它不会以某种方式复制文件。

这是我的 Dockerfile 中的复制行:

FROM google/cloud-sdk AS gcloud
RUN mkdir ./models
RUN gsutil cp gs://rim-models/model_1.pkl ./models/model_1.pkl

当我用gcloud builds submit --tag gcr.io/project-id/api-name --timeout=3600创建图像时,它显示文件被复制:

Copying gs://rim-models/model_1.pkl ...
- [1 files][399.8 KiB/399.8 KiB]
Operation completed over 1 objects/399.8 KiB.

但是,我在 API 中遇到了这个错误:

FileNotFoundError: [Errno 2] No such file or directory: 'models/model_1.pkl'

当我在本地运行命令gsutil cp gs://rim-models/model_1.pkl ./models/model_1.pkl 时,它会将文件model_1.pkl 复制到我的本地目录models。那么为什么我将应用部署到 Cloud Run 时它不起作用?

编辑:将所有 models 路径更改为全部相对或全部绝对后,错误仍然存​​在。

【问题讨论】:

    标签: docker google-cloud-run google-cloud-build


    【解决方案1】:

    您创建的容器在​​目录定义中包含错误或不一致。

    RUN mkdir /models
    RUN gsutil cp gs://rim-models/model_1.pkl ./models/model_1.pkl
    

    第一行,你创建绝对路径/models,在几秒钟内,你使用相对路径./models

    您可以使用完整路径,也可以使用相对路径,但缺乏一致性。

    在您的 API 错误中,提及的是 models/model_1.pkl,显然是相对路径。我不知道您的 API 查找数据的完整路径,但您必须修复所有这些小的未对齐目录定义

    【讨论】:

    • 将所有models 路径更改为全部相对或全部绝对后,我仍然遇到相同的错误
    猜你喜欢
    • 2021-11-25
    • 2020-06-11
    • 2021-05-20
    • 2014-06-11
    • 2014-07-20
    • 2018-09-07
    • 2016-03-06
    • 1970-01-01
    • 2015-01-30
    相关资源
    最近更新 更多