[Docker]を使用すると、ワークフローを簡素化し、アプリケーションを運用環境にデプロイするプロセスを簡素化できます。開発中のコンテナを使用すると、次の利点があります。環境は一貫しているため、システムの競合を心配することなく、プロジェクトに必要な言語と依存関係を選択できます。環境が分離されているため、問題のトラブルシューティングや新しいチームメンバーの参加が容易になります。環境は移植性があり、コードをパッケージ化して他のユーザーと共有できます。このチュートリアルでは、Dockerを使用してhttps://nodejs.org/[Node.js]アプリケーションの開発環境をセットアップする方法を示します。Compose]で作成します。このアプリケーションはNodeおよびMongoDBで動作するため、セットアップでは次のことを行います。ホスト上のアプリケーションコードをコンテナ内のコードと同期して、開発中の変更を容易にします。再起動せずに、アプリケーションコードへの変更が機能することを確認します。アプリケーションのデータ用にユーザーとパスワードで保護されたデータベースを作成します。このデータを保持します。このチュートリアルの最後に、Dockerコンテナーで実行される動作するサメ情報アプリケーションがあります。[サメの完全コレクション]前提条件このチュートリアルを実行するには、次のものが必要です。+`特権とアクティブなファイアウォールを持つ非ルートユーザー。[初期サーバー設定ガイド]をご覧ください。18.04でDockerを使用してください]。+]ファイルを変更することです。+]に追加し、指定します開発中に使用します。+`でアプリケーションを実行すると、コードを変更するたびに自動的に再起動されます。+`リポジトリ]のクローンを作成します]。[MongoDBとノードアプリケーションを統合する方法]で説明されているセットアップのコードが含まれています。Mongooseを使用して、MongoDBデータベースを既存のNodeアプリケーションと統合する方法を説明しています。package.json`ファイルを開きます。+`オブジェクトを作成します。}}編集が終了したら、ファイルを保存して閉じます。プロジェクトコードを配置し、依存関係を変更したら、コンテナ化されたワークフローのコードのリファクタリングに進むことができます。ステップ2-コンテナを操作するためのアプリケーションの構成コンテナ化されたワークフロー用にアプリケーションを変更するということは、コードをよりモジュール化することを意味します。コンテナは環境間の移植性を提供します。コードは、基礎となるオペレーティングシステムから可能な限り分離したままにすることで、それを反映する必要があります。これを実現するために、コードをリファクタリングして、ノードのhttps://nodejs.org/api/process.html#process_process_env[process.env]プロパティをより活用します。このプロパティは、実行時にユーザー環境に関する情報を含むオブジェクトを返します。コードでこのオブジェクトを使用して、実行時に環境変数を使用して構成情報を動的に割り当てることができます。+」から始めましょう。constantの定義とhttps:/が表示されます。function]は、この定数を使用して、アプリケーションがリッスンするポートを指定します。`定数を再定義しましょう。+`関数に次の変更を加えます。`を動的に割り当てます。[テンプレートリテラル]。接続をリッスンするときにポート値を補間します。ポートを他の場所にマッピングするため、これらの改訂により、環境の変化に合わせてこのファイルを継続的に改訂する必要がなくなります。編集が終了したら、ファイルを保存して閉じます。次に、データベース接続情報を変更して、構成資格情報を削除します。+」ファイルを開きます。db.js現在、ファイルは次のことを行います。Mongooseをインポートします。Mapper_(ODM)です。ユーザー名とパスワードを含むデータベース資格情報を定数として設定します。+`メソッド]を使用してデータベースに接続します。ファイルの詳細については、https://www.digitalocean.com/community/tutorials/how-to-integrate-mongodb-with-your-node-application#step-3-%E2%80%94-を参照してください。MongoDBとユーザーを統合する方法ノードアプリケーション]。ファイルを変更する最初のステップは、機密情報を含む定数を再定義することです。現在、これらの定数は次のようになっています。+`オブジェクトを使用して、これらの定数のランタイム値をキャプチャできます。ブロックを次のように変更します。process.env;...編集が終了したら、ファイルを保存して閉じます。」を変更しましたが、これらの変数をアプリケーションに渡す方法が必要です。+`ファイルを作成しましょう。+`から削除した情報(アプリケーションのデータベースのユーザー名とパスワード、ポート設定とデータベース名)が含まれます。ここにリストされているユーザー名、パスワード、データベース名を自分の情報で更新することを忘れないでください。db.js`にあったホスト設定を*削除*していることに注意してください。Composeファイルのレベルで定義し、サービスとコンテナーに関するその他の情報を追加します。編集が終了したら、このファイルを保存して閉じます。+`ファイルに含まれるようにする必要があります。.dockerignoreファイルの最後に次の行を追加します。.dockerignore....gitignore編集が終了したら、ファイルを保存して閉じます。.gitignore....env...この時点で、プロジェクトコードから機密情報を正常に抽出し、この情報をコピーする方法と場所を制御する手段を講じました。データベース接続コードに堅牢性を追加して、コンテナ化されたワークフロー用に最適化できるようになりました。次のステップは、アプリケーションがデータベースへの接続に失敗した場合を処理するコードを追加することにより、データベース接続方法をより堅牢にすることです。[推奨されるプラクティス]です。+]メソッドが表示されます。parser]を使用するように指示するオプションを受け入れます。このメソッドにいくつかのオプションを追加して、再接続を試行するためのパラメーターを定義しましょう。+`定数の次の定義を追加します。`は接続試行の間隔をミリ秒単位で定義します。+`は、接続試行に失敗する前にMongoドライバーが待機する期間として10秒を定義します。+`定数を使用して、Mongoose接続設定を微調整できるようになりました。潜在的な接続エラーを処理するためにhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises[promise]を追加します。+`メソッドは次のようになっています。+`定数とプロミスを含む次のコードに置き換えます。db.js...接続が成功した場合、関数は適切なメッセージを記録します。+]でエラーを記録し、トラブルシューティングを行います。完成したファイルは次のようになります。console.log(err);});編集が終了したら、ファイルを保存して閉じます。これで、アプリケーションがデータベースへの接続に失敗する可能性がある場合に対処するために、アプリケーションコードに復元力が追加されました。このコードを配置したら、Composeを使用してサービスの定義に進むことができます。`ファイルを作成する準備が整います。+`ファイルに含める)には、各コンテナーイメージの実行方法に関する情報が含まれています。Composeツールを使用すると、複数のサービスを定義してマルチコンテナアプリケーションを構築できます。+]というプロジェクトにツールを追加して、アプリケーションがデータベースへの接続を1回だけ試行するようにしますデータベースの起動タスクが完了しました。`]は、特定のホストとポートがTCP接続を受け入れているかどうかをポーリングします。これを使用すると、データベースが接続を受け入れる準備ができているかどうかをテストすることにより、アプリケーションがデータベースに接続する試行を制御できます。option]を使用してサービス間の依存関係を指定できますが、この順序はコンテナーが実行されているかどうかに基づいていますその準備よりも。」を使用することはセットアップに最適ではありません。」認証データベースに追加するなど、データベースの起動タスクが完了したときにのみアプリケーションを接続するためです。+`およびその他のツールを使用して起動順序を制御する方法の詳細については、関連するhttps://docs.docker.com/compose/startup-order/[Composeドキュメントの推奨事項]を参照してください。wait-for.sh次のコードをファイルに貼り付けて、ポーリング機能を作成します。protected]"コードの追加が終了したら、ファイルを保存して閉じます。スクリプトを実行可能にします。+`アプリケーションサービスを定義します。+`サービス定義には次のオプションが含まれます。dockerfile`などの構成オプションを定義します。+:これは、イメージビルドのビルドコンテキスト(この場合は現在のプロジェクトディレクトリ)を定義します。[Node.jsアプリケーションをビルドする方法Docker]。+:これらは画像とコンテナに名前を適用します。+:これは再起動ポリシーを定義します。+」ですが、停止しない限りコンテナを再起動するように設定しています。+`というファイルから環境変数を追加したいことをComposeに伝えます。`ファイルで定義したMongo接続設定を追加できます。」に設定していないことに注意してください。[default]の動作。」に設定できます[ビューのキャッシュを有効にし、より詳細なエラーを少なくしますメッセージ]。+`にマッピングします。+`ディレクトリにマウントします。これにより、ホストコードに加えた変更がコンテナにすぐに入力されるため、迅速な開発が促進されます。