Я пытаюсь использовать 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. Я не удалял предыдущую сборку и развертывал приложение из облачной сборки и облачного запуска, потому что при использовании предыдущего репо я несколько раз экспериментировал со сборкой, и все успешно.
Я предоставил ответ ниже. Пожалуйста, проверьте
Согласно этому документу 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 разных изображения, или вы неправильно разместили _
(подчеркивание) с -
(дефис).
у вас есть два разных изображения с
gcr.io/$PROJECT_ID/fts_im
иgcr.io/$PROJECT_ID/fts-im
или это ошибка замены_(underscore)
на-(hyphen)
. Также согласно этому документу убедитесь, что файл конфигурации сборки (cloudbuild.yaml) находится в том же каталоге