Это ошибка сборки Google Cloud? или я ошибаюсь Docker? - PullRequest
1 голос
/ 18 июня 2020

Первый вопрос: «Кто-нибудь знает, что я делаю неправильно ниже?». Второй вопрос: `` Если нет, есть ли способ перечислить файлы в какой-то команде, которую я поместил в Dockerfile в надежде отладить больше, и, возможно, также сделать pwd в Dockerfile (пытаясь увидеть, что отличается в каждой среде ''

Шаг 1. git checkout master, git pull

Step 2. Запустите "gcloud builds submit --config cloudbuild.yaml"

Step 3. настройка триггера сборки google с использованием «того же точного» cloudbuild.yaml из репозитория

Шаг 4. «Триггеры сборки gcloud запускают default-pu sh -trigger-1 --branch master»

Шаг 2 завершается успешно и правильно запускает точку входа образа Docker. На шаге 4 возникает ошибка

/bin/sh: ./downloadAndExtract.sh: not found
ERROR
ERROR: build step 0 "gcr.io/orderly-gcp/continuous-deploy" failed: step exited with non-zero status: 127

Мой файл Dockerfile очень простой

ОТ gcr.io/google. com / cloudsdktool / cloud-sdk: alpine

RUN mkdir -p ./monobuild
COPY . ./monobuild/
WORKDIR "/monobuild"
ENTRYPOINT ./downloadAndExtract.sh

Мой файл cloudbuild.yaml еще проще

steps:
- name: gcr.io/$PROJECT_ID/continuous-deploy

Есть ли какие-то проблемы с окружающей средой или что-то в этом роде?

Я запускаю цикл docker build / pu sh в каталоге с этими файлами

  • Dockerfile
  • cloudbuild.yaml
  • deployDockerImage. sh
  • downloadAndExtract. sh
  • runCILocallyToTest. sh
  • triggerGoogleRemoteBuild. sh

КОНЕЧНО, в этом каталоге нужны ТОЛЬКО два файла: Dockerfile и downloadAndExtract. sh, поэтому мне, вероятно, следует изменить свой docker файл, чтобы просто скопировать downloadAndExtract. В любом случае, это не главное. Почему у меня не работают триггеры сборки Google?

РЕДАКТИРОВАТЬ: У меня только что прозрение. Поместите ls в качестве точки входа. Это доказало, что триггер asyn c повреждает мой образ сборки содержимым моно-репо и уничтожает все, что я настроил. Почему это? Почему они заставили синхронизацию c запускать сборку иначе, чем встроенный триггер?

1 Ответ

1 голос
/ 18 июня 2020

Я думаю, что в вашем Dockerfile есть несколько ошибок

Во-первых, определение пути

COPY . ./monobuild/
WORKDIR "/monobuild"

Вы копируете свой файл в <currentPath>/monobuild (я имею в виду ./monobuild), и вы определяете свой рабочий каталог как <rootPath>/monobuild.

Таким образом, точка входа использует ./downloadAndExtract.sh, который обычно находится в <rootPath>/monobuild.

Итак, для очистки вашего Dockerfile я предлагаю это

RUN mkdir -p /monobuild
WORKDIR "/monobuild"
COPY . .
ENTRYPOINT /monobuild/downloadAndExtract.sh

Имеет ли это смысл в вашем контексте? Работает?

...