Angular 8 в GAE - PullRequest
       6

Angular 8 в GAE

0 голосов
/ 24 января 2020

Я пытаюсь развернуть свое веб-приложение на App Engine. Я не очень хорошо разбираюсь в node.js / Javascript / веб-вещах в целом, я просто создал что-то простое, используя Angular. Любые советы или указатели на хорошие уроки / статьи очень приветствуются, возможно, что-то совершенно очевидно, что я здесь упускаю.

Проект работает нормально локально, когда я запускаю ng serve --open, но я изо всех сил пытаюсь развернуть это в App Engine. Вещи, которые я пробовал:

1) Гибкая среда выполнения App Engine с использованием Docker

Шаги: выполните аутентификацию, а затем gcloud app deploy frontend.yaml. Мой файл frontend.yaml:

runtime: custom
env: flex

service: frontend

manual_scaling:
  instances: 1

resources:
  cpu: 1
  memory_gb: 4
  disk_size_gb: 10

Мой Dockerfile:

FROM node:10-alpine
WORKDIR /usr/src/app
COPY ./ .
RUN npm config set unsafe-perm true
RUN npm install -g @angular/cli .
ENV PATH="${PATH}:/usr/src/app"
ENV STAGE="int"
EXPOSE 8080
ENTRYPOINT ["ng serve"]

Что происходит: в основном ничего, контейнер Docker успешно создан, но не развернут

Updating service [frontend] (this may take several minutes)...failed.
ERROR: (gcloud.app.deploy) Error Response: [4] Your deployment has failed to become healthy in the allotted time and therefore was rolled back. If you believe this was an error, try adjusting the 'app_start_timeout_sec' setting in the 'readiness_check' section.

Я уверен, что это не работает, вы можете настроить только веб-сервер, используя ng serve локально?

2) Используя ng build и получив dist Папку

Из этого примера здесь: Развертывание Angular 2/4/6 приложения в Google App Engine

Когда я запускаю интерактивную оболочку gcloud с помощью gcloud beta interactive, я получаю следующее: gsutil rsync -r gs://angular-app-bucket ./angular-app-gcp / usr / bin / bash: строка 248: gsutil: команда не найдена

3) Установка дополнительных инструментов

См., например, это обсуждение: Как Развертывание Angular 7 проекта в Google Cloud К сожалению, для меня это невозможно.

Большое спасибо за все комментарии и предложения!

Ответы [ 2 ]

1 голос
/ 27 января 2020

Я несколько удивлен вашей настройкой. Какова цель вашего Docker изображения? Я не вижу ссылки на GAE.

И ng serve не подходит для производственной среды. Фактически, продуктивное Angular приложение состоит из stati c файлов и может обслуживаться практически с любого веб-сервера. (ng serve более сложен для поддержки эффективной разработки программного обеспечения.)

Go с простой настройкой:

  • Запустите ng build --prod, чтобы создать продуктивную версию вашего app (в каталоге dist).
  • Развертывание в GAE: gcloud app deploy app.yaml

Ниже app.yml - это все, что требуется. Предполагается, что ваше приложение называется app. В основном он заботится о перезаписи всех URL-адресов на index.html. Он использует среду выполнения Python, поскольку он небольшой, настраиваемый и достаточный для обслуживания приложения Angular.

runtime: python27
api_version: 1
threadsafe: yes
instance_class: f1

handlers:
  - url: /(.*\.[A-Za-z0-9]{1,4})$
    static_files: dist/app/\1
    upload: dist/app/(.*\.[A-Za-z0-9]{1,4})$
  - url: /(.*)$
    static_files: dist/app/index.html
    upload: dist/app/index.html
1 голос
/ 27 января 2020
Updating service [frontend] (this may take several minutes)...failed.ERROR: (gcloud.app.deploy) Error Response: [4] Your deployment has failed to become healthy in the allotted time and therefore was rolled back. If you believe this was an error, try adjusting the 'app_start_timeout_sec' setting in the 'readiness_check' section.

Что происходит: практически ничего, контейнер Docker успешно создан, но не развернут

Обычно это происходит, когда текущее приложение вы пытаетесь развернуть все еще читает / использует устаревшую проверку работоспособности, или в этом случае это может быть связано с развертыванием приложения с использованием gcloud app deploy без предварительного включения обновленной проверки работоспособности.

По умолчанию HTTP-запрос от обновленных проверок работоспособности не пересылается в ваш контейнер приложений. Это может объяснить, почему ваш Docker контейнер успешно создает приложение, но не развертывает его, как показано в приведенной выше ошибке.

Вы можете включить обновленные проверки работоспособности, используя:

gcloud beta app update --split-health-checks --project [your-project-id].

Здесь вы найдете дополнительную информацию об обновленных проверках состояния.

Если это не сработает, вы можете попытаться добавить проверки готовности и / или проверки жизнеспособности, как показано здесь .

  • С одной стороны, проверки живучести подтверждают, что виртуальная машина и контейнер Docker работают. Экземпляры, которые считаются нездоровыми, перезапускаются.
  • С другой стороны, проверки готовности подтверждают, что ваш экземпляр готов принять входящие запросы. Экземпляры, которые не прошли проверку готовности, не добавляются в пул доступных экземпляров.

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

Надеюсь, это поможет.

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