Как создать образ докера, используя облачную сборку с SDK, на локальной машине, не умирая, пытаясь это - PullRequest
0 голосов
/ 19 сентября 2018

Я использую облачную сборку для создания образа докера. Руководствуясь примерами, предоставьте github :

------ bin

------ pkg

------ src

     --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', '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 ...

me

Руководствуясь примерами, предоставьте в документацию :

------ bin

------ pkg

------ src

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

giveмне эта ошибка: «не могу найти пакет me / backend ни в одном из. и» и пакет ошибок с тем же, он не может найти мой пакет me2 me3

Так что любой знаетчто не так с конфигурацией?:(

1 Ответ

0 голосов
/ 27 января 2019

Для пользователей с такой же проблемой большая проблема - это аргументы go зависимости: ['install', 'me / backend'] "install" было узким местом, которое мешало мне выполнить сборку, по какой-то причине, "install"не получает все зависимости, вам нужно сначала получить все зависимости с помощью этого: args: ['get', '- d', 'me / backend / ...'], очевидно, вы меняете "me / backend" для своего репозиторияВы хотите построить.

Как настроен мой локальный репозиторий:

----- bin

------ pkg

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

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 .
...