В настоящее время я переношу наш монорепозиторий на рабочие области пряжи. Он содержит несколько пакетов и услуг. Услуги зависят от пакетов в соответствующем package.json
. Я хотел бы развернуть свои службы в Google App Engine без публикации sh пакетов в частном npm реестре.
Мне удалось развернуть одну службу, используя настраиваемую среду выполнения и переместив app.yaml
и Dockerfile
в root монорепозитория, чтобы иметь доступ к пакетам и сервису в контексте сборки. Проблема в том, что у меня несколько сервисов, и я не могу иметь все файлы докеров в root монорепозитория, так как они должны быть названы Dockerfile
, и я не могу изменить контекст сборки.
Я вижу 2 простых решения:
Первое - переместить app.yaml
и Dockerfile
соответствующей службы в root монорепозитория перед развертыванием. Но это выглядит довольно грязно и сделает код CI очень сложным.
Второй - иметь одиночные Dockerfile
и service1.yaml
, service2.yaml
et c. в root монорепозитория и передать переменные в Dockerfile. Проблема в том, что в документации App Engine я не вижу способа передавать переменные в Dockerfile
настраиваемой среды выполнения.
Решение моей мечты - сохранить каждый Dockerfile
и app.yaml
в каталоге их соответствующих служб и иметь возможность установить контекст сборки через gcloud
CLI (как мы можем сделать в docker-compose
). Пример:
project
├── package.json
├── packages
│ ├── package1
│ │ ├── package.json
│ │ └── src
│ ├── package2
│ │ ├── package.json
│ │ └── src
│ └── package3
│ ├── package.json
│ └── src
├── services
│ ├── service1
│ │ ├── app.yaml
│ │ ├── Dockerfile
│ │ ├── package.json
│ │ └── src
│ └── service2
│ ├── app.yaml
│ ├── Dockerfile
│ ├── package.json
│ └── src
└── yarn.lock
и запустите что-то вроде: gcloud app deploy services/service1/app.yaml --build-context=.
Но я не вижу никакого способа сделать это в документации.
Вы знаете, как Я могу приблизиться к "решению моей мечты"?