Вопрос или проблема
У меня есть папка со скриптами, содержащая python-скрипт, docker-файл и файл requirements.txt
Мой python-скрипт работает отдельно и корректно на локальной машине.
Python-скрипт
import os
import time
from fastapi import FastAPI
import uvicorn
app = FastAPI()
SHARED_VOLUME_PATH = '/mnt/shared'
@app.get("/")
def process_data():
data = "От основного автомобиля"
with open(os.path.join(SHARED_VOLUME_PATH, 'shared_data_file.txt'), 'w') as f:
f.write(data)
print("Данные обработаны и сохранены в общем хранилище")
response = "Данные обработаны и сохранены в общем хранилище"
return response
if __name__ == '__main__':
port = int(os.environ.get("PORT", 8080))
uvicorn.run(app, host="0.0.0.0", port=port)
process_data()
Содержимое docker-файла следующее
FROM python:3.11
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY main.py .
CMD ["python", "main.py"]
Когда я выполняю команду
gcloud builds submit --tag europe-west4-docker.pkg.dev/<GCP-project-ID>/artifactory/scar-prim-component:latest
Я получаю эту ошибку.
ERROR: (gcloud.builds.submit) HTTPError 412: 'us' нарушает ограничение 'constraints/gcp.resourceLocations'
Я не очень силен в этой области. Пожалуйста, подскажите, что мне нужно изменить, чтобы я мог загрузить свой код как компонент артефактов в GCP.
Я выполнил тот же скрипт и проделал те же шаги в другом проекте GCP, и все сработало хорошо и было развернуто.
Если есть альтернативный способ сборки и загрузки в артефакторы, пожалуйста, опишите шаги (подробно)
Ответ или решение
Ошибка при использовании команды gcloud builds submit
с сообщением:
ERROR: (gcloud.builds.submit) HTTPError 412: 'us' violates constraint 'constraints/gcp.resourceLocations'
указывает на то, что вы пытаетесь выполнить операцию, которая не соответствует ограничениям по размещению ресурсов в вашем проекте Google Cloud Platform (GCP). Эта проблема может быть связана с тем, что ваши ресурсы находятся в регионе, который не поддерживается для ваших текущих настроек проекта.
Причины и Решения Ошибки
-
Проверка Регионов:
- Убедитесь, что ваш проект настроен на использование правильного региона. Ошибка говорит о том, что вы пытаетесь использовать регион
us
, хотя ваши ресурсы или ресурсы, к которым вы пытаетесь получить доступ, могут быть расположены вeurope-west4
. - Вы можете проверить настройки региона вашего проекта, используя команду:
gcloud config get-value compute/region
- Убедитесь, что ваш проект настроен на использование правильного региона. Ошибка говорит о том, что вы пытаетесь использовать регион
-
Изменение Региональных Настроек:
- Если ваша сборка должна происходить в
europe-west4
, вам нужно будет переключить ваш текущий проект на использование этого региона. Используйте следующую команду для установки региона:gcloud config set compute/region europe-west4
- Если ваша сборка должна происходить в
-
Проверка Политик Ограниающих Ресурсы:
- Возможно, в проекте установлены политики, ограничивающие использование определенных регионов. Убедитесь, что у вашего проекта нет ограничений, которые могут блокировать создание или размещение ресурсов в заданном регионе.
-
Правильность Docker-Repo URL:
- Проверьте правильность вашего URL для Docker-репозитория. Он должен быть в формате
<REGION>-docker.pkg.dev/<GCP-project-ID>/artifactory/scar-prim-component:latest
. Убедитесь, что все поля заменены корректными значениями и совпадают с вашим проектом.
- Проверьте правильность вашего URL для Docker-репозитория. Он должен быть в формате
Альтернативный Способ Сборки и Публикации
Если ваша текущая методология не работает, вы можете попробовать ручную сборку и отправку Docker-образа:
-
Локальная Сборка Docker-образа:
- Перейдите в директорию со скриптом и Docker-файлом.
- Выполните команду для сборки образа:
docker build -t scar-prim-component:latest .
-
Вход в Google Container Registry (GCR):
- Войдите в GCR, используя:
gcloud auth configure-docker
- Войдите в GCR, используя:
-
Пометить и Отправить Образ:
- Видоизмените ваш образ на самом GCP:
docker tag scar-prim-component:latest europe-west4-docker.pkg.dev/<GCP-project-ID>/artifactory/scar-prim-component:latest docker push europe-west4-docker.pkg.dev/<GCP-project-ID>/artifactory/scar-prim-component:latest
- Видоизмените ваш образ на самом GCP:
Заключение
Проблема, с которой вы столкнулись, часто возникает из-за несоответствия регионов. Проверив настройки и выполнив шаги для исправления, вы сможете без труда выполнить вашу задачу. Не забывайте учитывать важные аспекты настройки проекта в GCP, так как они могут существенно влиять на возможность выполнения таких операций.