【问题标题】:How to make my Docker image usable for Google Cloud Container Builder triggered build如何使我的 Docker 映像可用于 Google Cloud Container Builder 触发构建
【发布时间】:2018-03-02 20:20:45
【问题描述】:

我已经构建了一个简单的 docker 镜像来将 Hugo (SSG) 编译成一个静态博客。 我正在尝试构建以下管道:

  1. 将代码提交到 GitHub

  2. 在 GCP Google Cloud Container Builder 中触发构建,只需 2 个步骤

    -使用我的图像“编译”*.md 文件

    -使用 GCP cloud-builders 镜像将文件移动到我的 GCP 存储桶

  3. 使用具有自定义域名的 Google Cloud Storage 存储桶发布内容

此问题涉及步骤 2.1

这是我的码头工人形象:

FROM alpine:latest

LABEL description="Docker container for building static websites with Hugo as part of a Google Cloud Container Builder pipeline"
LABEL maintainer="me"
LABEL version="1.0"

#Install Hugo static website generator from sources
ARG HUGO_VERSION=0.36.1
ADD https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz /tmp
RUN tar -xf /tmp/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz -C /tmp \
&& mkdir -p /usr/local/sbin \
&& mv /tmp/hugo /usr/local/sbin/hugo \
&& rm -rf /tmp/hugo_${HUGO_VERSION}_linux_amd64 \
&& rm -rf /tmp/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz \
&& rm -rf /tmp/LICENSE.md \
&& rm -rf /tmp/README.md

RUN apk add --update git \
&& apk upgrade \
&& apk add --no-cache ca-certificates


VOLUME /src
VOLUME /build

WORKDIR /src

CMD "hugo"

我已经在 gcr.io 中发布了这张图片,我也在本地对其进行了测试,如果像这样调用它会很好地工作: sudo docker run --name "test" -P -v $(pwd):/src hugo-docker。 如果在文件夹中调用,它会编译在那里找到的 hugo 结构,并生成一个包含最终站点的 ./public 文件夹。

这是在 GCP 中的调用方式

steps:
- name: gcr.io/thematic-lol-000000/hugo-builder:latest
  args: ["-P", "-v .:/src"]   
- name: gcr.io/cloud-builders/gsutil
  args: ["-m", "rsync", "-r", "-c", "-d", "./public", "gs://gcp.jubi.blog"]

当作为触发构建的一部分启动它时,我收到以下错误消息:

Step #0: container_linux.go:262: starting container process caused "exec: \"-P\": executable file not found in $PATH"
Step #0: docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "exec: \"-P\": executable file not found in $PATH".

我在本地遇到了这个错误,我可以通过在图像名称之前放置参数来解决这个问题,但是在这里我不确定我是否可以这样做。

另外,GCP 文档提到挂载了 /workspace 目录,这是它从 git hub 获取代码的地方,我不知道如何在我的 Dockerfile 中引用它。

我还希望能够在本地(将 . 作为工作目录传递)或在 GCP Cloud 容器构建器中使用该文件

【问题讨论】:

  • 如何将参数 -P 传递给构建器?如果有配置文件,可以分享一下吗?
  • 我已经添加了 cloudbuild.yaml

标签: docker google-cloud-platform google-cloud-storage hugo


【解决方案1】:

来自here,当您尝试运行 docker 命令时,您需要在 cloudbuild.yaml 文件中将其告知构建器。然后将参数作为 args 传递:

steps:
- name: gcr.io/cloud-builders/docker
  args: ['run', 'gcr.io/$PROJECT_ID//hugo-builder:latest', '-P', '-v .:/src']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多