Итак, у меня есть триггер CloudBuild, который создает мой cloudbuild.yaml
файл, и все это прекрасно и здорово. Я также использую конструктор gcloud для запуска команд докеров для передачи переменных ENV в мой Dockerfile
. Например:
steps:
- name: 'gcr.io/$PROJECT_ID/swift:4.2'
args: ['test']
id: 'Running unit tests'
- name: 'gcr.io/cloud-builders/docker'
args: ['build','--build-arg', 'PROJECT=$PROJECT_ID','-t', 'us.gcr.io/$PROJECT_ID/$BRANCH_NAME:$SHORT_SHA', '.']
id: 'Building docker image'
- name: 'gcr.io/cloud-builders/docker'
args: ["push", "us.gcr.io/$PROJECT_ID/$BRANCH_NAME:$SHORT_SHA"]
id: 'Pushing built image to registry'
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy']
id: 'Deploying to AppEngine'
timeout: 1800s # 30 minute timeout
Как вы видите, я использую переменные ENV, которые по умолчанию имеют все ресурсы GCP (например, _ 4_). И в команде docker я передаю ее в качестве аргумента, поэтому могу использовать команду ARG
в файле docker:
ARG PROJECT
FROM gcr.io/${PROJECT}/swift:4.2 as builder
WORKDIR /App
#Other commands....
Теперь все это работает нормально, и я могу создать свой образ и т. Д. Теперь я хочу развернуть его в движке приложения на последнем этапе. Единственная проблема в том, что я использую тот же файл Dockerfile, чтобы использовать swift:4.2
базовый образ, который находится только в моем GoogleContainerRegistry, поэтому мне нужен $PROJECT_ID
для моего проекта, чтобы вытащить его.
Мой вопрос: есть ли способ, чтобы среда сборки AppEngine передавала аргументы сборке докера, которая создает мой образ при развертывании? У меня есть файл app.yaml
, и я знаю, что есть свойство env_variables:
, и я знаю, что смогу использовать команду docker ARG
или ENV
(не могу вспомнить, какую), чтобы поместить свой $PROJECT_ID
в свой файл Dockerfile. Но единственная проблема заключается в том, что, насколько мне известно, в AppEngine это свойство не определено. Единственное, что я могу придумать, - это echo
шаг $PROJECT_ID
от Cloud Builder до конца app.yaml
файла. Но если есть более чистый подход, я бы хотел услышать об этом. Спасибо!