如何在本地机器上使用带有 sdk 的云构建来构建 docker 图像而不会死去尝试它

How to build a docker image using cloud build with sdk, in local machine without dying trying it

我正在使用 cloud build 构建一个 docker 图像 从 github:

提供的示例中引导自己

------bin

------包装

------源码

     --cloud.google.com
     --contrib.go.opencensus.io
     --github.com
     --go.opencensus.io
     --golang.org
     --google.golang.org
     --me
        --backend

------cloudbuild.yaml

------Docker文件

我所有的代码都在 src -> me -> backend 中

云构建步骤.yaml文件内容为:

    steps:
- name: 'gcr.io/cloud-builders/go'
  args: ['install', 'me/backend']
  env: ['GOPATH=.']
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '--tag=gcr.io/superpack-213022/me/backend', '.']
images: ['gcr.io/superpack-213022/me/backend']

Docker 文件:

FROM scratch

COPY bin/backend /me/backend

ENTRYPOINT ["/me/backend"]

给我这个错误:

can not find a package golang/x/sys/unix in any of ...

documentation:

提供的示例中引导自己

------bin

------包装

------源码

     --cloud.google.com
     --contrib.go.opencensus.io
     --github.com
     --go.opencensus.io
     --golang.org
     --google.golang.org
     --me
        --backend
          cloudbuild.yaml
          Dockerfile

我所有的代码都在 src -> me -> backend 中

云构建步骤.yaml文件内容为:

    steps:
- name: 'gcr.io/cloud-builders/go'
  args: ['install', '.']
  env: ['GOPATH=backend']
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '--tag=gcr.io/superpack-213022/backend', '.']
images: ['gcr.io/superpack-213022/backend']

Docker 文件:

FROM scratch

COPY bin/backend /backend

ENTRYPOINT ["backend"]

给我这个错误: "can not find package me/backend in any of . and" 还有很多错误,找不到我的包裹

有人知道配置有什么问题吗? :(

有同样困扰的用户,最大的问题是go dependencies 参数:['install'、'me/backend'] "install" 是阻止我完成构建的瓶颈,出于某种原因,"install" 不会获取所有依赖项,您需要先获取所有依赖项: args: ['get','-d','me/backend/...'], 显然你改变了 "me/backend" 为你想要构建的存储库。

我的本地存储库设置如何:

-----bin

------包装

------源码

 --cloud.google.com #dependency
 --contrib.go.opencensus.io #dependency
 --github.com #dependency
 --go.opencensus.io #dependency
 --golang.org #dependency
 --google.golang.org #dependency
 --me #my code
    --backend
       .
       .
    --deploy
      cloudbuild.yaml
      Dockerfile

此外,我将 "src/me" 的所有代码移至 google cloud repositories

cloudbuild.yaml:
    steps:
    - name: 'gcr.io/cloud-builders/gcloud-slim'
      args: ['source','repos','clone', '[repositorie name]','src/me','--project=[project name]']  #change [repositorie name] and [project name] for your repositorie name and project name respectively
    - name: 'gcr.io/cloud-builders/go'
      args: ['get','-d','me/backend/...']
    - name: 'gcr.io/cloud-builders/go'
      args: ['install', 'me/backend']
      env: ['GOPATH=.']
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '--tag=gcr.io/[project name]/me/backend', '.'] #change [project name] with your project name
    images: ['gcr.io/[project name]/me/backend'] #change [project name] with your project name 
    artifacts:
      objects:
        location: 'gs://[your bucket name]/backend/' #change [your bucket name] for your bucket name
        paths: ['./bin/backend']

Docker 文件:

FROM alpine
COPY bin/backend /backend
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
CMD ["/backend"]
RUN chmod 755 /backend

在命令行中你应该(以我的本地存储库为例):

cd src/me/deploy
gcloud builds submit .