MongoでDockerコンテナの中でノード・アプリをつくる方法


導入


これは、2010年のシリーズの第2部ですDocker meets NodeJS ここでは、我々はネットワークを介して我々のノードのアプリでそれに接続するMongoDB、データベースサービスを導入する予定です.

Note: Since we are introducing a new database service, by doing so this also makes our Node app also a service

Note: Ensure you go through the since it contains a huge part of how we created our Node app within a Docker container.

Note: Remember to clone the docker_nodejs_app repo here


始める


回収する


シリーズの最初の部分では、次のようにしました.
  • プロジェクトのセットアップ
  • ノードコンテナを作成する
  • ゴール


    できるはずです.
  • ネットワーク経由でアクセスできるMongoDBサービスを追加します.
  • サービスに関して


    サービスは基本的にコンテナのグループであり、アプリケーションのスケールを簡単にします.

    レッツコード


    Mongoデータベースにノードを接続するには、新しい依存関係をインストールする必要がありますMongoose .
    $ npm install mongoose --save
    
    我々のノードアプリを我々の我々の線のカップルを加えることによって存在しないデータベースに接続しましょうapp.js ファイル.
    
    // Connect to database
    mongoose.connect("mongodb://mongo:27017/docker_nodejs_app", {
      useNewUrlParser: true,
      useCreateIndex: true
    });
    
    mongoose.connection.on("open", err => {
      if (err) console.log(chalk.red("Error connecting to our mongo database"));
      console.log(chalk.green("Connected to mongo database successfully"));
    });
    
    

    Note: If you have used mongoose and mongo before, your local or mlab connection URL might look like this mongodb://localhost:27017/<your_db> or mongodb://<dbuser>:<dbpassword>@ds115595.mlab.com:15595/<your_db> respectively and not mongodb://mongo:27017. This is because our mongo database service will be called mongo and since it exists in a docker container and not locally on your drive we will expose the port 27017 in its container.


    あなたapp.js ファイルは次のようになります
    
    "use strict"; // Ensures our code is compiled in strict mode
    
    // Lets import our web framework
    var express = require("express");
    var mongoose = require("mongoose");
    
    // Initialise our app
    const app = express();
    
    // Lets set our port
    /**
     * The default port number is `3000`
     * Take note on that as we will come to that.
     */
    app.set("port", 3000);
    
    
    // Connect to database
    mongoose.connect("mongodb://mongo:27017/docker_nodejs_app", {
      useNewUrlParser: true,
      useCreateIndex: true
    });
    
    mongoose.connection.on("open", err => {
      if (err) console.log("Error connecting to our mongo database");
      console.log("Connected to mongo database successfully");
    });
    
    /**
     * To ensure works as it should we will create a
     * simple endpoint to return a json response
     */
    
    // Define our json response
    const data = {
      blog_name: "docker_nodejs_app",
      blog_author: "wachira (tesh254)",
      blog_author_twitter: "@wachira_dev"
    };
    
    // Define out GET request endpoint
    app.get("/", (req, res) => {
      res.status(200).json(data);
    });
    
    // Initialize our server
    app.listen(app.get("port"), () => {
      console.log(`Server listening on port ${app.get("port")}`);
    });
    
    
    
    我々のノードのアプリを実行する場合は、エラーを取得する必要があります

    我々のMongoDBサービスをつくってください


    いくつかのサービスを構築して実行するためにはdocker-compose.yml 特定の設定を含むファイル.
    $ touch docker-compose.yml
    
    入力するYAML ファイル
    
    # Defines our composer file version
    version: "2.2"
    # Define our services 
    services: 
      # This is our nodejs app built using the Dockerfile
      app:
        # The name of our node app container
        container_name: docker_nodejs_app
        # Restarts our node app whenever it fails
        restart: always
        # Builds the node app docker container from the local -
        # Docker file we created
        build: .
        # Exposes the necessary ports that our node app uses
        ports:
          - "3000:3000"
        # All the services our node app will link to -
        # which in our case is only mongo
        # You can other services such as a Redis
        links:
          # The name should be similar to the service you will build
          - mongo
      # Our database service called mongo
      mongo:
        # The name of the database container, NOTE: it is similar to the name provided
        container_name: mongo
        # Builds a mongo image from the docker repository
        image: mongo
        # Exposes the ports that Mongo uses
        ports:
          - "27017:27017"
    
    

    To run our configurations we will use a docker-compose command...wait where did this come from? 😳


    コマンドdocker-compose Dockerソフトウェアが付属していますdocker-compose.yml ファイル.
    ビルドし、我々のアプリケーションとmongoサービスを実行するには、あなたの端末でこれを入力してください
    $ docker-compose up
    
    次に起こることは少し長くなります.😇...フリータイム.たぶん自分でコーヒーを作る☕️ またはチェックアウト

    次はDocker :

  • リモートDockerリポジトリからMongoイメージをプルします
  • のキャッシュをダウンロード
  • mongoのインスタンスを実行する

  • ビルドノードアプリケーション
  • 当社のサーバーを実行し、正常にMongoデータベースに接続します.

  • 何が次のビルド成功後?


    あなたはカップルを作成することによってデータベースをテストすることができます
  • MongoDBデータベースコレクションでデータを保存するPOSTリクエスト
  • データベースコレクションからデータを取得するリクエストを取得する
  • 要求をデータベースコレクション内のデータを更新する
  • データベースコレクション内のデータを削除する要求を削除
  • 概要


    要約すると、この投稿では次のようになります.
  • 成功したMongoDBデータベースサービスに接続
  • 入門入門docker-compose コマンド

  • 次の部分で
  • Herokuの上で我々のアプリケーションを主催します
  • 私たちのレポをDockerリポジトリにプッシュします.
  • Docker内の他のコマンドは、以下のような経験をします.
  • コンテナキャッシュのクリア
  • 削除、Dockerコンテナの停止
  • エクストラ

  • レポへのリンクhttps://github.com/werickblog/docker_nodejs_app
  • nodejsダウンロードhttps://nodejs.org/en/download/
  • ダウンロードDockerhttps://www.docker.com/get-started
  • Dockerとは何かhttps://docs.docker.com/engine/docker-overview/