DOCKER-デフォルトのDockerfileを作成し、イメージを作成してコンテナを実行


🎯 テスト内容

  • 簡単なnodejsアプリケーション(画面出力はHell)
  • を作成
  • ダックファイル
  • を作成
  • ドックイメージバージョン
  • の画像を使用してコンテナ
  • を作成する.

    🚀 簡単なnode appの作成


    vs codeの使用npm initコマンドを実行してパッケージ化します.jsonファイルの作成
    package.json
    {
      "name": "nodejs-docker-app",
      "version": "1.0.0",
      "description": "simple node js app to study docker",
      "main": "server.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
        
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "express": "^4.17.1"
      }
    }
    expressモジュールのみ追加
    index.js
    const express=require('express');
    
    const port=8080;
    
    const app=express();
    app.get('/',(req,res)=>{
        res.send("Hello")
    });
    
    app.listen(port);
    console.log("Server is Running");

    🚀 Dockerfileの作成


    Dockerfileを作成した理由
    上記で作成したnodejsをドッキング環境で実行するには、イメージを作成し、コンテナを作成する必要があります.
    Dockerfileを作成して画像を作成
    ファイル形式は関係ありません.
    Dockerfile

  • 用語
    1. FROM
    ドッキングイメージを生成するには、ベースイメージをインポートし、ベースイメージのファイルスナップショットを使用して一時コンテナを作成する必要があります.
    一時コンテナで使用される基本イメージ
    nodeの指定:<バージョン>
    2. WORKDIR
    アプリケーションのソースコードを含むディレクトリをイメージに作成します.
    作成理由は、ローカルディレクトリからコンテナにコピーされたコンテンツがコンテナのルートディレクトリにコピーされないようにするためです.
    (スペースのクリーンアップと厳格な隔離が必要)
    ex)
  • WORKDIR未確定時
  • WORKDIRの決定時
  • 3. COPY
    Localのファイルをドッキングコンテナのディレクトリにコピーします.
    COPYが提供されていない場合、コンテナは仮想環境(独立した空間)です.
    私たちの地元のパッケージjsonとindex.jsが認識できない可能性があります
    4. RUN
    ドッキングコンテナで他の必要な設定のコマンドを指定します.npm install銀パック.jsonの内容を反映するために使用
    COPY package.json ./とCOPY././分かち合う理由
    ビルド時にドッキング

    すでに構築されている場合は、キャッシュインポートが使用されます.
    新規作成よりも効率的です.
    ここでCOPYパッケージjson ./とCOPY././COPY././指定する場合は、パッケージを再構築する必要がなく、アプリケーションのコードのみを変更します.jsonが生成されます.
    そのため、このように使い分けた方が効果的です.
    5. CMD
    コンテナの起動時に実行するコマンド.
    dockerが実行されている場合、ノードインデックス.jsは実行されます

    🚀 Dockerfile build

    docker built -t 도커허브아이디/이미지이름:버전 ./-tタグは、ドッキング画像に良い名前を付けることができます.

    🚀 コンテナの実行

    docker run -p 5000:8080 <이미지 아이디>ローカルポートとコンテナポートをマッピングする必要があります
    ordocker run -p 5000:8080 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app <이미지 아이디>コンテナにコピーされたファイルを再構築し、ローカルで変更した後、コンテナを実行するプロセスは非常に煩雑です.
    docker volumeという機能を使用して、ファイルを指定したディレクトリにマッピングします.
    Node-modulesはnpm installの実行時に相関を保持する場所です.npm installは現在のコンテナで実行されるため、コンテナ内の個別のローカルをマッピングしないことを指定します.

    🌟 実行結果




    正常に動作していることを確認します.

    😍 以上が私たちのヒントですありがとうございます