目次
Node にはいくつかのネイティブ アドオンが存在する可能性があります。それらは、node-gyp を通じてコン​​パイルされ、
ホームページ ウェブフロントエンド jsチュートリアル Docker を使用して Node.js アプリケーションを効率的にデプロイする方法の紹介

Docker を使用して Node.js アプリケーションを効率的にデプロイする方法の紹介

Aug 28, 2020 am 10:11 AM
docker node.js

Docker を使用して Node.js アプリケーションを効率的にデプロイする方法の紹介

合理的で効率的な導入ソリューションは、迅速なアップグレード、スムーズな切り替え、負荷分散、アプリケーションの分離、その他の導入機能を実現できるだけでなく、成熟した安定した監視機能も備えています。

kubernetes Node アプリケーションをサーバー側アプリケーションのブラック ボックスとして扱い、上記の条件に完全に一致し、k8s にノードをデプロイするチームが増えています。 [推奨されるビデオ チュートリアル: node js チュートリアル Docker ビデオ チュートリアル ]

ただし、その前に、Docker コンテナ上で Node アプリケーションを実行する必要があります。この章の主題。

# Docker でのフロントエンドのデプロイメントに関して、著者はいくつかの記事を書いています:

  1. #Docker でフロントエンドをデプロイする方法
  2. フロントエンド展開のプレビューと運用
  3. フロントエンド展開の開発プロセス
Aシンプルな Node アプリケーション

index.js

Node Web App の

hello, world バージョン

const http = require('http')

const app = async (req, res) => {
  res.end('hello, world')
}

http.createServer(app).listen(3000, () => console.log(3000))
ログイン後にコピー

パッケージ.json

Configuration

npm start でアプリケーションを起動します

"scripts": {
  "start": "node index.js"
},
ログイン後にコピー

ただし、これは最も単純な Node アプリケーションにすぎません。実際の環境では、さまざまなデータ ストレージが存在します。スケジュールされたタスクのスケジュール設定などについては、今は脇に置いておきましょう。それについては話さないでください。それだけで十分です。

もう少し複雑な Node アプリケーションについては、Shanyue のプロジェクト

whoami: serverlessdockerize の最も単純な例をチェックしてください。

NODE_ENV=production

運用環境では、

devDependecies に依存関係をインストールする必要はありません。NODE_ENV 環境変数が運用に設定されている場合、 devDep はスキップされます。

# 通过设置环境变量,只安装生产环境依赖
$ NODE_ENV=production npm ci

# 通过显式指定 flag,只安装生产环境依赖
$ npm ci --production
ログイン後にコピー

一方、一部のサードパーティ モジュールは、NODE_ENV 環境変数に基づいて予期しない構成を作成します。したがって、運用環境ではこの環境変数の構成に注意してください。

Node アプリケーションの簡単なデプロイメント

典型的なサーバー指向の Node アプリケーションは次のように実行されます:

  1. npm install
  2. npm run config, 構成サービス (consul/vault) から構成 (データベースやキャッシュされたアカウントのパスワードなど) をプルします。この時点で、ビルド サーバーには構成サービスのアクセス許可が必要です
  3. npm run merge、データベース移行スクリプト、データベース テーブルの列と行の変更を実行します。この時点で、ビルド サーバーにはデータベース アクセス許可が必要です
  4. npm start、開始しますノード サービス
  5. ##実行中のステップを Dockerfile に変換します:
# 选择一个体积小的镜像 (~5MB)
FROM node:12-alpine

# 环境变量设置为生产环境
ENV NODE_ENV production

WORKDIR /code

# 更好的根据 Image Layer 利用缓存
ADD package.json package-lock.json /code
RUN npm ci

ADD . /code

# 配置服务及数据库迁移
RUN npm run config --if-present && npm run migrate --if-present

EXPOSE 3000
CMD npm start
ログイン後にコピー

これで、ほとんどのノード アプリケーションには十分です。改善したい場合は、次のマルチステージ ビルドに進むことができます。

node-gyp とネイティブ アドオン

Node にはいくつかのネイティブ アドオンが存在する可能性があります。それらは、node-gyp を通じてコン​​パイルされ、

python

, に依存します。 makeg <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>$ apk --no-cache add python make g++</pre><div class="contentsignin">ログイン後にコピー</div></div>コンパイルプロセスを伴うイメージ構築では、ソースファイルとビルドツールによりスペースの無駄が発生します。イメージの

マルチステージ ビルド

を使用すると、スペースを効率的に利用できます。 Go AppFE App もこのルールに従うように構築されています。

    Go アプリケーションを複数の段階で構築する
  • フロントエンド アプリケーションを複数の段階で構築する
  • ノード アプリケーションの構築 ミラーリングの場合、ミラーリングの最初の層は
node_modules

を構築するために使用されます。

# 选择一个体积小的镜像 (~5MB)
FROM node:12-alpine as builder

# 环境变量设置为生产环境
ENV NODE_ENV production

# 更好的根据 Image Layer 利用缓存
ADD package.json package-lock.json ./
RUN npm ci

# 多阶段构建之第二阶段
# 多阶段构建之第二阶段
# 多阶段构建之第二阶段
FROM node:12-alpine

WORKDIR /code
ENV NODE_ENV production

ADD . .
COPY --from=builder node_modules node_modules
# 配置服务及数据库迁移
RUN npm run config --if-present && npm run migrate --if-present

EXPOSE 3000
CMD npm start
ログイン後にコピー
関連記事

    N-API と Node.js 用の C アドオンの作成の開始
  1. ##Docker for Node の使用開発と運用における .js
  2. #プログラミング関連の知識の詳細については、プログラミング入門
  3. をご覧ください。 !

以上がDocker を使用して Node.js アプリケーションを効率的にデプロイする方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Dockerによってコンテナを出る方法 Dockerによってコンテナを出る方法 Apr 15, 2025 pm 12:15 PM

Dockerコンテナを終了する4つの方法:コンテナ端子でCtrl Dを使用するコンテナターミナルに出口コマンドを入力しますDocker stop&lt; container_name&gt;コマンドを使用するDocker Kill&lt; container_name&gt;ホストターミナルのコマンド(フォース出口)

Dockerのファイルを外部にコピーする方法 Dockerのファイルを外部にコピーする方法 Apr 15, 2025 pm 12:12 PM

Dockerの外部ホストにファイルをコピーする方法:Docker CPコマンドを使用:Docker CP [Options]&lt; Container Path&gt; &lt;ホストパス&gt;。データボリュームの使用:ホストにディレクトリを作成し、-vパラメーターを使用してコンテナを作成するときにディレクトリをコンテナにマウントして、双方向ファイルの同期を実現します。

Dockerを再起動する方法 Dockerを再起動する方法 Apr 15, 2025 pm 12:06 PM

Dockerコンテナを再起動する方法:コンテナID(Docker PS)を取得します。コンテナを停止します(docker stop&lt; container_id&gt;);コンテナを起動します(docker start&lt; container_id&gt;);再起動が成功していることを確認します(Docker PS)。その他の方法:Docker Compose(Docker-Compose Restart)またはDocker API(Dockerドキュメントを参照)。

DockerによるMySQLを開始する方法 DockerによるMySQLを開始する方法 Apr 15, 2025 pm 12:09 PM

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Dockerの画像を更新する方法 Dockerの画像を更新する方法 Apr 15, 2025 pm 12:03 PM

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

Dockerプロセスを表示する方法 Dockerプロセスを表示する方法 Apr 15, 2025 am 11:48 AM

Dockerプロセス表示方法:1。DockerCLIコマンド:Docker PS; 2。SystemDCLIコマンド:SystemCTL Status Docker; 3。CLIコマンドを作成するDocker:Docker-Compose PS。 4。プロセスエクスプローラー(Windows); 5。 /procディレクトリ(Linux)。

中国のDocker画像ソースを変更する方法 中国のDocker画像ソースを変更する方法 Apr 15, 2025 am 11:30 AM

国内のミラーソースに切り替えることができます。手順は次のとおりです。1。構成ファイル/etc/docker/daemon.jsonを編集し、ミラーソースアドレスを追加します。 2。保存して終了した後、Docker Service Sudo SystemCtlを再起動してDockerを再起動して、画像のダウンロード速度と安定性を改善します。

See all articles