Dockerは、開発者とシステム管理者が軽量コンテナとしてどこでもアプリケーションをビルド、パッケージ化、実行するためのオープンプラットフォームを提供するオープンソースプロジェクトです。 Dockerは、ソフトウェアコンテナ内のアプリケーションのデプロイを自動化します。
Nodejsは、オープンソースのJavaScriptランタイム環境です。マルチプラットフォームのランタイムであり、Linux、Windows、MacOS、FreeBSDなどにインストールできます。Nodejsは、サーバーとデスクトップの両方のアプリケーションを構築するのに非常に便利です。
このチュートリアルでは、Ubuntu18.04で既存のNodejsExpressアプリケーションプロジェクトのDockerイメージを作成する方法を紹介します。 Nodejsアプリケーションのドッキングについて学習し、docker-composeスクリプトを使用してアプリケーションをコンテナーとしてdocker環境にデプロイします。
- Ubuntu 18.04
- root権限
- DockerCEをインストールする
- Dockerのインストール-作成
- NodejsExpressプロジェクトのセットアップ
- プロジェクトを構築する
- テスト
このチュートリアルでは、dockerリポジトリからdocker-ceコミュニティエディションをインストールします。構成ファイルバージョン3をサポートするdocker-ceコミュニティエディションとdocker-composeをインストールします。
docker-ceをインストールする前に、aptコマンドを使用して必要なdocker依存関係をインストールしてください。
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
次に、以下のコマンドを実行して、Dockerキーとリポジトリを追加します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
docker-ceパッケージをインストールします。
sudo apt install docker-ce
インストールが完了したら、Dockerサービスを開始し、システムの起動時に毎回起動できるようにします。
systemctl start docker
systemctl enable docker
次に、Dockerコンテナを実行および管理するための通常のユーザー権限を付与します。
'mohammad'という名前の新しいユーザーを追加し、dockerグループに追加します。
useradd -m -s /bin/bash mohammad
usermod -a -G docker mohammad
次に、「mohammad」ユーザーとしてログインし、dockercontainerhello-worldを実行します。
su - mohammad
docker run hello-world
そして、以下のような結果が得られます。
このステップでは、GitHubからダウンロードできるバイナリファイルからdocker-composeを手動でインストールします。 composev3をサポートする最新のdocker-composeバージョンをインストールします。
最新の1.22.0バージョンのdocker-composeを使用してcurlコマンドを「/usr/ local / bin」ディレクトリにダウンロードし、chmodを使用して実行可能にします。
以下のコマンドを実行します。
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
また、最新のdocker-composeバージョンがインストールされています。以下のdocker-composeコマンドを実行して確認してください。
docker-compose version
結果は次のとおりです。
このセクションでは、Nodejsアプリケーション環境を構成します。 'express-generator'を使用して生成できる単純なnodejsアプリケーションを使用します。
'mohammad'ユーザーにログインします。
su - mohammad
'project'という名前の新しいディレクトリを作成し、そこに移動します。
mkdir -p project
cd project
次に、以下の「express」コマンドを使用して、簡単なhello-wordnodejsアプリケーションを生成します。
express hakase-app
注:
nodejs、npm、および「express-generator」パッケージがシステムにインストールされていることを確認してください。
そして、「hakase-app」ディレクトリにシンプルなnodejsexpressアプリがあります。
次に、「hakase-app」nodejsアプリケーション用のカスタムDockerイメージを作成します。
'project'ディレクトリの下で、vimを使用して新しい'Dockerfile'を作成します。
vim Dockerfile
次のDockerイメージ構成をそこに貼り付けます。
FROM node:8.11.4-alpine RUN mkdir -p /src RUN npm install express-generator -g WORKDIR /src ADD hakase-app/package.json /src/package.json RUN npm install EXPOSE 3000 CMD node hakase-app/bin/www
保存して終了します。
以下の仕様で、nodejsアプリケーション用の新しいカスタムDockerイメージを作成しています。
- カスタムイメージは、公式のnodejsイメージ8.11.4アルパインバージョンに基づいています。
- プロジェクト「/src」の新しいディレクトリを作成しています。
- 「express-generator」をカスタムイメージにインストールします。
- アプリケーションプロファイルと必要なパッケージを含む「package.json」ファイルを「/src」ディレクトリに追加します。
- 「package.json」ファイルに基づいて、プロジェクトに必要なすべてのnodejsパッケージをインストールします。
- デフォルトのexecstartコマンド'nodehakase-app / bin/www'を使用してポート3000をエクスポートします。
次に、docker-composeスクリプトに基づいてカスタムイメージを作成します。
vimを使用して新しいymlファイル「docker-compose.yml」を作成します。
vim docker-compose.yml
次の構成をそこに貼り付けます。
version: '3' services: hakase-app: build: . volumes: - ./hakase-app:/src/hakase-app ports: - "3000:3000" restart: always
保存して終了します。
「hakase-app」という名前の新しいDockerサービスを作成すると同時に、プロジェクトディレクトリの「Dockerfile」に基づいてカスタムDockerイメージを構築し、hakase-appアプリケーションファイルを自動的にマウントします。
NodejsExpressのセットアップが完了しました。
'mohammad'ユーザーとしてログインし、'project'ディレクトリに移動します
su - mohammad
cd project/
以下のdocker-composeコマンドを使用して、イメージをビルドし、dockerservicehakase-appを作成します。
docker-compose build
これで、次のような結果が得られます。
そして、完了したら、「hakase-app」dockerサービスを実行します。
docker-compose up -d
結果は次のとおりです。
NodejsアプリケーションのカスタムDockerイメージが作成され、hakase-appdockerサービスが稼働しています。
サーバーで利用可能なDockerイメージを表示します。
docker-compose images
docker images
Nodejsアプリケーション用の新しいカスタムDockerイメージが作成されました。
実行中のDockerサービスを表示します。
docker-compose ps
docker ps
Nodejsアプリは、ホストポート3000で稼働しています。
Webブラウザーを開き、サーバーのIPアドレスとポートを入力します。
http://10.0.15.2:3000/
そして、あなたは簡単なエクスプレスページを手に入れるでしょう。
Ubuntu18.04でのNodejsExpressアプリケーションのDockerizingが正常に完了しました。