Как развернуть приложения asp. net core (backend) и angular 8 (frontend) вместе в Google App Engine? - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь перенести свой проект с общего хостинга на Google Cloud Platform.

Мое приложение состоит из серверной части (asp. net core) и внешнего интерфейса (angular 8). Они общаются только с помощью вызовов веб-API. В моей локальной среде и на моем текущем хосте (общий хостинг windows) он работает отлично. Мне нужно только опубликовать sh мой веб-проект через веб-развертывание из Visual Studio, и он развертывает приложение. net и angular вместе с этим одним щелчком.

Часть моего Startup.cs:

if (!Environment.IsDevelopment())
{
    // In production, the Angular files will be served from this directory
    services.AddSpaStaticFiles(configuration =>
    {
        configuration.RootPath = "MyAngularApp/dist";
    });
}

Среди других возможных решений я нашел App Engine , на котором я хочу развернуть свое приложение. Я создал файлы app.yaml для своего бэкэнда и для своего интерфейса. быть развернутым в отдельном домене.

Мое решение не работает, думаю, мой подход неверен. Следует ли настраивать эти два приложения в одном файле yaml? Я ищу лучшие практики, как это должно быть сделано.

Ответы [ 2 ]

0 голосов
/ 21 июля 2020

Можно решить одним app.yaml без контейнеризации:

runtime: aspnetcore
env: flex

instance_class: F2
automatic_scaling:
  min_num_instances: 1
  max_num_instances: 5
  cool_down_period_sec: 120
  cpu_utilization:
    target_utilization: 0.6
  target_concurrent_requests: 10

resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

api_version: 1
threadsafe: true
handlers:
- url: /
  static_files: AngularApp/dist/index.html
  upload: AngularApp/dist/index.html
- url: /
  static_dir: AngularApp/dist
0 голосов
/ 10 июля 2020

В частности, для вашего сценария, поскольку существуют зависимости между pnet .core и angular, наиболее плавным переходом на Google App Engine будет контейнер для ваших приложений и использование App Engine Flex с custom runtime.

Это решило бы типичную проблему «Работает при разработке, но не на производстве». В противном случае при развертывании в другие продукты App Engine, такие как Standard или Flex, могут возникнуть ошибки, поскольку их среда выполнения может не включать все зависимости вашего проекта.

В итоге вам необходимо:

  1. Создайте файл Docker, который будет содержать ваше приложение aspdotnet / angular в контейнере. Я нашел этот хороший пример контейнерного приложения do tnet. Следование последнему может быть недостаточно, поскольку оно не содержит всех операторов docker, но вы также можете использовать этот другой, чтобы помочь вам заполнить недостающие операторы docker для angular.

  2. Создайте файл app.yaml со следующей конфигурацией. runtime: custom env: flex service: [SERVICE_NAME]

  3. Выполнить gcloud app deploy

Как вы можете видеть, наиболее сложной частью приведенного выше списка является docker, но в нем есть много преимуществ для вашего приложения в контейнере, поскольку развертывание с гибкой настраиваемой средой выполнения Google App Engine минимально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...