Получение ошибки «Уже есть образ (с дайджестом): gcr.io/cloud-builders/docker» при попытке Gitlab CICD

Я пытаюсь использовать Gitlab CI/CD с Cloud Build и Cloud Run для развертывания приложения Flask.

я получаю сообщение об ошибке

starting build "Edited"
FETCHSOURCE
Fetching storage object: gs://Edited
Copying gs://Edited
\ [1 files][  2.1 GiB/  2.1 GiB]   43.5 MiB/s                                   
Operation completed over 1 objects/2.1 GiB.
BUILD
Starting Step #0
Step #0: Already have image (with digest): gcr.io/cloud-builders/docker
Step #0: unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /workspace/Dockerfile: no such file or directory
Finished Step #0
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 1
--------------------------------------------------------------------------------
Cleaning up project directory and file based variables 00:00
ERROR: Job failed: exit code 1

Мой .gitlab-ci.yml

image: aft/ubuntu-py-dvc
stages:
  - deploy

deploy:
  stage: deploy
  tags:
    - fts-cicd
  image: aft/ubuntu-py-gcloudsdk-dvc
  services:
    - docker:dind
  script:


    - echo $dvc > CI_PIPELINE_ID.json
    - echo $GCP_LOGIN > gcloud-service-key.json
    - dvc remote modify --local view-model-weights credentialpath CI_PIPELINE_ID.json
    - dvc pull
    - gcloud auth activate-service-account --key-file gcloud-service-key.json
    - gcloud config set project $PROJECT_ID
    - gcloud builds submit . --config=cloudbuild.yaml

облачная сборка.yaml

steps:
# Build the container image
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/$PROJECT_ID/fts-im', '.']
# Push the container image to Container Registry
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/$PROJECT_ID/fts-im']
# Deploy container image to Cloud Run
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  entrypoint: gcloud
  args: ['run', 'deploy', 'fts_im', '--image', 'gcr.io/$PROJECT_ID/fts_im', "--platform", "managed",  "--region","asia-northeast1", "--port", "8000","--memory", "7G", "--cpu", "2", "--allow-unauthenticated"]
images:
- gcr.io/$PROJECT_ID/fts-im

Докерфайл

FROM python:3.9.16-slim
ENV  LC_ALL=C.UTF-8
ENV  LANG=C.UTF-8



ADD . /app
COPY .* app/
WORKDIR /app
ADD . .secrets
COPY CI_PIPELINE_ID.json .secrets/CI_PIPELINE_ID.json
RUN ls -la .
RUN ls -la data/
RUN pwd
RUN ls -la .secrets
RUN pip install -r requirements.txt
CMD ["gunicorn"  , "-b", "0.0.0.0:8000", "wsgi:app"]

Пробуя другие решения, я пытался удалить докеры с виртуальной машины, которая использовалась для Runner в настройках CICD, я экспериментировал с тестовым репозиторием, и это сработало полностью, я получаю эту ошибку при воспроизведении ее в новом репо. с измененным именем на fts_im. Я не удалял предыдущую сборку и развертывал приложение из облачной сборки и облачного запуска, потому что при использовании предыдущего репо я несколько раз экспериментировал со сборкой, и все успешно.

у вас есть два разных изображения с gcr.io/$PROJECT_ID/fts_im и gcr.io/$PROJECT_ID/fts-im или это ошибка замены _(underscore) на -(hyphen). Также согласно этому документу убедитесь, что файл конфигурации сборки (cloudbuild.yaml) находится в том же каталоге

Sathi Aiswarya 16.02.2023 13:31

Я предоставил ответ ниже. Пожалуйста, проверьте

Sathi Aiswarya 20.02.2023 07:45
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
2
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно этому документу Dockerfile должен находиться в том же каталоге, где находится файл конфигурации сборки,

Запустите команду ниже, чтобы проверить, присутствует ли Dockerfile в текущем каталоге или нет.

docker build -t docker-whale

Если файл Dockerfile находится в том же каталоге, что и файл конфигурации сборки, просмотрите эту документацию, чтобы убедиться, что в файле конфигурации сборки указан правильный рабочий каталог.

Убедитесь, что GitLab CI/CD настроен правильно и настроен для работы в текущей ветке.

Также вы должны указать полный путь к Dockerfile в файле cloudbuild.yaml.

Имя файла должно быть Dockerfile, а не **.**Dockerfile. Файл не должен иметь никакого расширения. проверьте правильность имени Dockerfile.

Убедитесь, что вы не ошиблись в названии изображения, я вижу 2 разных имени изображения gcr.io/$PROJECT_ID/fts-im и gcr.io/$PROJECT_ID/fts_im, я не уверен, что это 2 разных изображения, или вы неправильно разместили _ (подчеркивание) с - (дефис).

Другие вопросы по теме