GC Cloud Сборка собственного процесса сборки с внутренним репозиторием - PullRequest
0 голосов
/ 05 ноября 2018

Мне нужно настроить пользовательский процесс сборки приложения GC AppEngine с помощью GC Cloud Build.
Прежде всего - у меня есть внутренний репозиторий Python на экземпляре GC ComputeEngine. Он доступен только через внутреннюю сеть, и я использую Remote-builder для запуска pip install команды на внутреннем экземпляре GC.
После загрузки зависимостей из внутреннего репозитория необходимо развернуть результаты в GC AppEngine.

Cloudbuild.yaml :
steps: /#Download dependencies from the internal repository - name: gcr.io/${ProjectName}/remote-builder env: - COMMAND=sudo bash workspace/download-dependencies.bash - ZONE=us-east1-b - INSTANCE_NAME=remote-cloud-build - INSTANCE_ARGS=--image-project centos-cloud --image-family centos-7 - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'gcr.io/${ProjectName}/app', '.'] - name: gcr.io/cloud-builders/docker args: ['push', 'gcr.io/${ProjectName}/app'] - name: gcr.io/cloud-builders/gcloud args: ['app', 'deploy', 'app.yaml', '--image-url=gcr.io/${ProjectName}/${ProjectName}'] images: ['gcr.io/${ProjectName}/${ProjectName}']

app.yaml:
runtime: python env: flex entrypoint: python main.py service: service-name runtime_config: python_version: 3

Dockerfile:
FROM gcr.io/google-appengine/python WORKDIR /app COPY . /app

скачать-dependencies.bash:
#!/usr/bin/env bash easy_install pip pip install --upgrade pip pip install --upgrade setuptools pip install -r workspace/requirements.txt'

После запуска gcloud builds submit --config cloudbuild.yaml новая версия приложения развернута в AppEngine, но она не работает

Может, проблема в неправильном изображении? Насколько я понимаю, мне нужно настроить Dockefile для сбора всех пользовательских зависимостей Python в образ.
Не могли бы вы помочь мне с этим
Заранее спасибо!

Обновление Я изменил свой Dockerfile в соответствии с руководством Google:
FROM gcr.io/google-appengine/python RUN virtualenv /env ENV VIRTUAL_ENV /env ENV PATH /env/bin:$PATH ADD . /app CMD main.py
И новая ошибка: /bin/sh: 1: main.py: not found
Если я изменю последнюю строку на: CMD app/main.py - она ​​создает версию и не работает

1 Ответ

0 голосов
/ 09 ноября 2018

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

steps:
# Move our code to instance inside the project to have access to the private repo
- name: gcr.io/${PROJECT_NAME}/remote-builder
  env:
  - COMMAND=sudo bash workspace/download-dependencies.bash:
  - ZONE=us-east1-b
  - INSTANCE_NAME=remote-cloud-build
  - INSTANCE_ARGS=--image-project centos-cloud --image-family centos-7
#Build image with downloaded deps
- name: gcr.io/cloud-builders/docker
  args: ['build', '-t', 'gcr.io/${PROJECT_NAME}/${APP_NAME}', '.']
#Push image to project repo
- name: gcr.io/cloud-builders/docker
  args: ['push', 'gcr.io/${PROJECT_NAME}/${APP_NAME}']
#Deploy image to AppEngine
- name: gcr.io/cloud-builders/gcloud
  args: ['app', 'deploy', 'app.yaml', '--image-url=gcr.io/${PROJECT_NAME}/${APP_NAME}']
images: ['gcr.io/${PROJECT_NAME}/${APP_NAME}']
timeout: '1800s'

скачать-dependencies.bash:

#!/usr/bin/env bash
easy_install pip

pip install --upgrade pip
pip install --upgrade setuptools
pip install wheel
#Download private deps and save it to volume (share folder between steps)
pip wheel --no-deps -r workspace/private-dependencies.txt -w workspace/lib --no-binary :all:

Dockerfile:

FROM gcr.io/google-appengine/python
COPY . /${APP_NAME}
RUN virtualenv /env


ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

RUN pip install -r /${APP_NAME}/workspace/public-dependencies.txt
#Install private deps from volume
RUN pip install -f /${APP_NAME}/workspace/lib --no-index ${LIBRARY_NAME}

CMD gunicorn -b :$PORT main:app
...