代码之家  ›  专栏  ›  技术社区  ›  aaronvargas

Gsutil在Google计算引擎的Dockerfile中不工作

  •  1
  • aaronvargas  · 技术社区  · 8 年前

    gsutil 下面是我的 Dockerfile

    # Install Google Cloud tools - Debian https://cloud.google.com/storage/docs/gsutil_install#deb
    ENV CLOUD_SDK_REPO="cloud-sdk-stretch"
    RUN echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO 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 add - && \
        apt-get update && apt-get install -y google-cloud-sdk
    
    # Setup Google Service Account
    COPY service-account.json /etc/
    ENV GOOGLE_APPLICATION_CREDENTIALS="/etc/service-account.json"
    
    RUN gcloud auth activate-service-account --key-file=${GOOGLE_APPLICATION_CREDENTIALS}
    
    # Copy the last updated ssl config
    RUN gsutil cp -r gs://my-project.appspot.com/docker/etc/letsencrypt /etc/ && \
        gsutil cp -r gs://my-project.appspot.com/docker/etc/apache2/sites-available /etc/apache2/
    

    当我部署到谷歌容器注册表并在GCE实例上使用DOCKER图像时,运行的码头工人图像上不存在文件。

    我可以从google构建日志中看到gsutil似乎工作正常,并且正在复制文件(在构建过程中)。

    感谢任何帮助!

    2 回复  |  直到 8 年前
        1
  •  2
  •   DazWilkin    8 年前

    我怀疑这些档案 在里面 /etc/

    这个 RUN 上面显示的步骤仅在生成图像时运行。 用于运行安装和生成在容器中运行的软件所需的步骤。 Run 从图像创建容器时不会运行步骤。

    所以,如果在 docker build

    从你展示的内容来看,不清楚运行图像时会发生什么。如果这是你的文件的全部,那么当你 docker run .

    NB公司 你的方法有安全隐患。任何拥有此映像的人都可以访问您的服务帐户密钥。对于包含密钥的数据(也可能 /letsencrypt/ )你的配置,最好在 时间和常用卷|挂载。

    我是否假设您希望使用此图像运行Apache?

        2
  •  1
  •   mhouglum    8 年前

    `gsutil cp` from Storage to compute instance running container doesn't copy files

    为gsutil设置的别名将在剥离容器中运行它,该容器的文件系统与主机分离。使用这个别名,如果您将某些内容复制到/etc/foo/bar,然后在主机文件系统上查找/etc/foo/bar,它将不存在。上面链接的问题包含一些解决方法。

    推荐文章