【问题标题】:Copy file from GCP to docker container将文件从 GCP 复制到 docker 容器
【发布时间】:2021-07-14 13:12:27
【问题描述】:

我必须将文件从 gcp 位置复制到 docker 映像中的特定目录。我使用 ubuntu:bionic 作为父图像。

安装 Python 和 Pip 后,我尝试了以下操作,

 RUN pip install gsutil \
   && gsutil cp gs:<some location> /home/${USER}/<some other location>

在构建 docker 映像时,出现以下错误,

    13 19.84 /bin/sh: 1: gsutil: not found

请让我知道我正在做的错误。

【问题讨论】:

  • 您能分享一下您是如何安装 Python 和 PIP 的吗?
  • 您是否只想在构建期间使用 gsutil 下载文件?您是否在该容器上使用 gsutil 来处理其他任何事情?

标签: docker google-cloud-platform dockerfile circleci gsutil


【解决方案1】:

在 Docker 容器docker exec -it (container name) bin/bash 中使用 Bash 并一次运行每个命令,如果命令成功,然后添加到 dockerfile,这将对您有很大帮助。

【讨论】:

  • 谢谢沙奇尔。你能不能也给我一个例子。
【解决方案2】:

您的问题的最佳解决方案取决于您是需要在容器内将gsutil 用于其他目的,还是仅用于复制文件。

  1. 如果您只需要使用gsutil 复制文件,最好使用multi-stage build in Docker,这样您的最终容器就不会安装额外的工具(在这种情况下是Cloud SDK)。这样会轻很多。 Dockerfile 将是:
FROM google/cloud-sdk:latest
RUN gsutil cp <src_location> <intermediate_location>

FROM ubuntu:bionic
COPY --from=0 <intermediate_location> <dst_location>
  1. 如果您需要gsutil 来在您的容器中进行进一步操作,在 ubuntu 中安装它的 Dockerfile 如下:
FROM ubuntu:bionic

RUN apt-get update && \
    apt-get install -y curl gnupg && \
    echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \
    curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg  add - && \
    apt-get update -y && \
    apt-get install google-cloud-sdk -y

RUN gsutil cp <src_location> <dst_location>

【讨论】:

    猜你喜欢
    • 2014-03-29
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2014-05-19
    相关资源
    最近更新 更多