画像はBaotu.comより 以下は、ReactJS プログラムの簡単なオンライン スリム化体験です。画像スリム化の方向性とインスピレーションを見つけるのに役立つことを願っています。 Web 開発関連の作業を行っている場合は、コンテナ化の概念やその強力な機能などをすでにご存知かもしれません。 しかし、Docker を使用する場合、イメージ サイズは重要です。 create-react-app (https://reactjs.org/docs/create-a-new-react-app.html) から取得する定型プロジェクトは、通常 1.43 GB を超えます。 今日は、ReactJS アプリケーションをコンテナ化し、画像サイズを縮小してパフォーマンスを向上させる方法についていくつかのヒントを学びます。 ここでは ReactJS を例として使用しますが、これはあらゆるタイプの NodeJS アプリケーションに適用できます。 ステップ1: プロジェクトを作成する①scaffoldingを利用してコマンドラインモードを使用してReactプロジェクトを作成します。
②コマンドが正常に実行されると、基本的なReactアプリケーションアーキテクチャが生成されます。 ③プロジェクトディレクトリに入り、依存関係をインストールしてプロジェクトを実行します。
④http://localhost:3000にアクセスすると起動したアプリケーションにアクセスできます。 ステップ2: 最初のイメージを作成する①プロジェクトのルートディレクトリにDockerfileというファイルを作成し、次のコードを貼り付けます。
② ここでは、Docker リポジトリからベースイメージ Node:12 を取得し、依存関係をインストールして基本コマンドを実行することに注意してください。 (ここではDockerコマンドの詳細については説明しません) ③ターミナルからコンテナのイメージをビルドできるようになりました。
④Dockerがイメージのビルドを完了したら、次のコマンドを使用してビルドされたイメージを表示できます。
クエリ結果リストの上部には新しく作成された画像が表示され、右端には画像のサイズが表示されます。現在は1.43GBです。 ⑤以下のコマンドでイメージを実行します。
ブラウザを開いてページを更新し、動作することを確認します。 ステップ3: ベースイメージを変更する① 前回の構成では、node:12をベースイメージとして使用しました。しかし、従来の Node イメージは Ubuntu をベースにしており、これは私たちのシンプルな React アプリケーションには必要ありません。 ② DockerHub(公式Dockerイメージレジストリ)から、alpineベースのNodeイメージはUbuntuベースのイメージよりもはるかに小さく、依存関係が非常に低いことがわかります。 ③これらの基本画像のサイズ比較は以下の通りです。 ここで、node:12-alpine をベースイメージとして使用し、何が起こるかを確認します。
次に、これを基にイメージを構築し、以前のイメージと比較します。 おお!画像サイズはわずか 580 MB に縮小され、大きな改善が見られました。しかし、もっと良くなる可能性はあるでしょうか? ステップ4: 多段階構築① 先ほどの設定では、すべてのソースコードも作業ディレクトリにコピーします。 ② しかし、公開と実行の観点からは、適切な実行ディレクトリを構築するだけでよいため、これは必要ありません。したがって、ここでは、最終イメージ内の不要なコードと依存関係を削減するためのマルチステージ ビルドの概念を紹介します。 ③構成は以下のとおりです。
④最初の段階では、依存関係をインストールし、プロジェクトをビルドします。 ⑤第2段階では、前の段階からビルド製品ディレクトリをコピーし、それを使用してアプリケーションを実行します。 ⑥ この方法により、最終イメージに不要な依存関係やコードが含まれなくなります。 次に、イメージが正常にビルドされたら、リストからイメージを表示します。 現在、画像サイズはわずか 97.5 MB です。これは本当に素晴らしいです。 ステップ5: Nginxを使用する①ReactJS アプリケーションの静的アセットを実行するために Node サーバーを使用していますが、これは静的アセットを実行するための最適な選択ではありません。 ② リソースアプリケーションを実行するために、Nginx などのより効率的で軽量なサーバーを使用するようにしています。これにより、パフォーマンスを可能な限り向上させ、イメージの量を削減することもできます。 ③最終的な Docker 構成ファイルは次のようになります。
④Docker構成の第2段階を変更して、Nginxを使用してアプリケーションを提供します。 ⑤次に、現在の構成を使用してイメージをビルドします。 ⑥画像サイズはわずか22.4MBに縮小! ⑦同時に、優れたアプリケーションを提供するために、よりパフォーマンスの高いサーバーを使用しています。 ⑧以下のコマンドを使用して、アプリケーションがまだ動作していることを確認できます。
⑨ デフォルトではコンテナ内のポート 80 で Nginx が利用可能になるため、コンテナのポート 80 を外部に公開することに注意してください。 これらは、画像サイズを大幅に削減するために、あらゆる NodeJS プロジェクトに適用できる簡単なヒントです。 これで、コンテナはよりポータブルかつ効率的になりました。今日はこれで終わりです。楽しいコーディングを! 著者:張亜龍訳 編集者:タオ・ジアロン 出典: 公開アカウント Distributed Laboratory (ID: dockerone) から転載 出典: https://javascript.plainenglish.io/how-i-reduced-docker-image-size-from-1-43-gb-to-22-4-mb-84058d70574b |
<<: 一般的なコンテナイメージ構築ツールとソリューションの紹介
>>: JVM 実用的な OutOfMemoryError 例外
ウェブサイト運営者は、プラットフォーム上の毎日のUVとIPに主に責任があり、ウェブサイトプラットフォ...
多くの SEO 関連の記事では、友好的なリンクを作成する場合、まず相手のウェブサイトを SITE し...
11月7日、Admin5.com(www.admin5.com)の報道によると、Tuan800の統計...
最近の namecheap のプロモーションは本当に素晴らしいです。ドメイン名 1 つあたり 3.9...
5月17日は世界電気通信デーです。中国電信天一クラウドは「赤い雲天一、安全で包括的」をテーマに、オン...
クラウドサーバー業者の Vultr は、すでにバックエンドに韓国のデータセンターを持ち、韓国のクラウ...
3月25日、南京市ビッグデータ管理局の翟盛強副局長と曹海斌副局長は、無錫市ビッグデータ管理局の関係幹...
1. アリババの「エコシステム」約4年前、アリババの上級管理職は「電子商取引エコシステム」の構築に着...
近年、あまりにも多くの企業がウェブサイトを構築しており、毎日複数の企業ウェブサイトが形成されています...
ロシアのインターネット投資王ユーリ・ミルナー新浪科技報、北京時間9月24日、ロシアのインターネット投...
実は、SEOは終焉に近づいているという声は今年3月から出始めており、当時、百度の一連の実践から、SE...
gigsgigscloud のシンガポール VPS に新しいシリーズ「仮想専用サーバー」が追加されま...
——平安クラウドは平安銀行と平安生命の革新的な変革の実現を支援[51CTO.comより引用] 201...
ローコードは常にソフトウェア開発の効率化の目標であり、進化の方向性でした。 SAP、Oracle、K...
最初の 4 回の注文で J252SCLO8R の VPS が 40% オフになり、更新価格は月額 3...