LoginSignup
3
5

More than 5 years have passed since last update.

Dockerfile作成&Nodeアプリケーションデプロイ

Posted at

Dockerfile作成&Nodeアプリケーションデプロイ

Nodeアプリケーションをdockerで運用したかったのでDockerfile作成してコンテナを作成し、デプロイした。
初心者だったのでdockerfileの書き方を調べて一から作成した。dockerfileの命令等を説明していきたい。

はじめに

Dockerをマシンにインストールしていることを前提とする。
git clone https://github.com/hikaru7719/chat_app.gitでnodeアプリケーションとDockerfileが持って来れます。
よろしければ是非。以下コマンドはclone先で実行してください。
githubのURLはこれ→githubURL

DockerFileとは

dockerfileはdockerコンテナを作成するためのいわば設計書である。
近年,devopsという考え方が広まってきているが、開発環境や運用環境の構築方法をコード化し管理できることは開発者にとってメリットが大きい。
dockerfileはいくつかの命令から構成されており、dockerデーモンはこれらの命令を逐次実行していき、dockerイメージを作成する。
シェルスクリプトに似ている気がする。

Dockerfile
FROM node:latest

MAINTAINER Hikaru Miyahara

ENV NODEPATH /node
ENV APP ${NODEPATH}/app

RUN mkdir -p ${APP}

COPY . ${APP}
WORKDIR ${APP}

RUN npm install

CMD npm start

これが今回作成したdockerfile。
以下命令について説明したい。

命令説明

FROM

FROM <イメージ名:タグ>
FROM命令はコンテナの基になるイメージを指定する。今回はnode最新バージョンのイメージnode:latestを引数に持つ。

MAINTAINER

これは作成者をかく欄。

ENV

ENV <変数名> <値>
これはdockerコンテナに渡す変数である。
また${変数名}で値を参照できる。シェルスクリプトとここら辺は一緒。

RUN

RUN <コマンド>
コマンドを実行する。

COPY

COPY <マシンパス> <dockerパス>
サーバ上のディレクトリやファイルをdockerコンテナにコピーするコマンド。
一つ目のマシンパスでコピーしたいディレクトリを指定し、dockerコンテナのコピー先をdockerパスの部分で指定する。

WORKDIR

dockerコンテナの実行ディレクトリ。
docker exec 等でコンテナ内に入るとここのworkdirに飛ぶ。

CMD

CMD <コマンド>
コマンドの実行。Dockerfileの最後の行に書く。
docker run実行後にコンテナ内のWORKDIRでこのコマンドを実行する。

dockerファイル説明

今回はFROM命令によってnode:latestのイメージを基にしている。これをカスタマイズしていく。
RUN mkdir -p ${APP}でdockerコンテナ上の/node/appディレクトリを作成。
COPY . ${APP}で現在いるディレクトリをコンテナ上の/node/appにコピー。
WORKDIR ${APP}でワーキングディレクトリを/node/appをしてい。
RUN npm installでコピーしたpackage.jsonに基づいてnodeパッケージをインストール。
CMD npm startでコンテナ作成後にアプリケーションの立ち上げ。

 実行してみる

nodeアプリケーションのあるディレクトリで
docker build -t chat_app .を実行。
タグ名をchat_appとしてdockerイメージを作成。
スクリーンショット 2017-09-09 22.00.00.png

docker run -d -p 18080:3000 --name chat_app chat_app
-dオプションはdockerコンテナをバックグランドで実行する。-pはポート指定のオプション。ホストマシンの18080ポートでdockerコンテナの3000ポートに繋がる。
--nameでコンテナ名をchat_appとしている。

ブラウザで確認

localhostu:18080にアクセスするとしっかりアプリケーションが立ち上がっていた。
スクリーンショット 2017-09-09 21.57.48.png

/でユーザー登録して/loginでログインしてメニューバーのchatからリアルタイムチャットできます。

終わりに

次回はdocker-composeしたい。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5