表現のないHerokuの上の角度


あなたの美しい角度プロジェクトをHerokuに配備するならば、あなたがする最初のことはそうです...Googleを使う.
ほとんどの人は、角度バンドルを送信するExpressJSインスタンスを使用するように指示します.
たとえば、Googleからのいくつかの結果
  • betterprogramming.pub
  • medium.com
  • itnext.io
  • stanislas.blog

  • なぜExpressJSを使用しない?


    角度のバンドルに役立つノードインスタンスを展開するのは良い考えですか?
    そうは思わない.
    そのため、
  • 以下のコード= ==より少ない問題
  • ツールは、Webサーバのような静的なHTMLを提供するために存在します
  • ExpressJsは、ダイナミックなウェブサイトまたはAPIを構築するために作られます
  • ExpressJSは、静的なファイルを提供するために多くのCPUを使用します
  • ここでは、static jsとnginxを比較して静的ファイルを提供するstackoverflowについて議論します.link

    解決策


    静的なHTMLを提供するには、角の束のように、我々は使用することができますNginx
    nginxを使用するには、角バンドルとnginxでDocker画像を構築します.

    Dockerfileを作成する


    プロジェクトのルートで、このコンテンツでDockerFileという名前のファイルを作成します.
    ⚠️ このファイルでは、パッケージの名前の値を使用してappappnameを置き換えます.JSONファイル.
    ### STAGE 1:BUILD ###
    FROM node:16.13.2-alpine AS build
    WORKDIR /dist/src/app

    RUN npm cache clean --force
    COPY . .
    RUN npm install
    RUN npm run build --prod

    FROM nginx:latest AS ngi
    COPY --from=build /dist/src/app/dist/your_app_name>/usr/share/nginx/html

    COPY /nginx.conf /etc/nginx/conf.d/default.conf

    CMD sed -i -e 's/$PORT/'"$PORT"'/g'/etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'

    EXPOSE $PORT

    設定ファイルを作成する


    プロジェクトのルートでnginxというファイルを作成します.conf
    server {
    listen $PORT;
    sendfile on;
    default_type application/octet-stream;
    gzip on;
    gzip_http_version 1.1;
    gzip_disable "MSIE [1-6].";
    gzip_min_length 256;
    gzip_vary on;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    gzip_comp_level 9;
    root /usr/share/nginx/html;
    location / {
    try_files $uri $uri/ /index.html =404;
    }
    }

    クリエイト.dockignoreファイル


    あなたが適切に物事をしたいなら😎, ファイル名を作成できます.プロジェクトのルートでDockIdignore.
    ファイルにリストされたファイルとディレクトリはDockerイメージを作成するときにはコピーされません.
    IDEファイルのようにプロジェクトに必要なすべてのファイルを追加できます.
    .git
    .editorconfig
    /.vscode/*
    /node_modules
    /e2e
    /docs
    .gitignore
    *.zip
    .angular
    .history
    dist

    あなたのアプリケーションのスタックをコンテナに設定します


    以下にスタックについてのドキュメントを示します:link
    あなたの端末でHeroku client 実行します

    heroku stack:set container -a your_heroku_app_name


    そして?


    Heroku(またはHerokuに接続された別のGitホスティングサービス)であなたのプロジェクトをプッシュし、その仕事をするためにDockerマジックを待ちます.