代码之家  ›  专栏  ›  技术社区  ›  John Balvin Arias

如何建立一个docker镜像使用云构建sdk,在本地机器上没有死尝试它

  •  1
  • John Balvin Arias  · 技术社区  · 6 年前

    我在用 cloud build 构建docker映像 从提供的例子中引导自己 github

    ------垃圾箱

    ------包装

    ------src公司

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

    ------cloudbuild.yaml

    我的所有代码都在src中->我->后端

    云构建步骤。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']
    

    FROM scratch
    
    COPY bin/backend /me/backend
    
    ENTRYPOINT ["/me/backend"]
    

    给我这个错误:

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

    me

    从提供的例子中引导自己 documentation

    ------垃圾箱

    ------包装

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

    云构建步骤。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"]
    

    和一串一串的错误一样,也找不到我的包裹 me2 me3

    1 回复  |  直到 6 年前
        1
  •  1
  •   John Balvin Arias    6 年前

    参数:['install','me/backend'] “install”是阻碍我完成构建的瓶颈,出于某种原因,“install”无法获取所有依赖项,您需要首先获取所有依赖项,如下所示:

    我的本地仓库设置如何:

    -----垃圾箱

    ------包装

    ------src公司

     --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']
    

    Dockerfile文件:

    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 .