🍎
Dockerを使ってnode.js(yarn)をコンテナ化してみた
概要
Docker✖︎node.js(express)を最小構成で構築していきます。
サーバーにアクセスされるとhello worldが返される簡単なアプリケーションになります。
npmで構築しているチュートリアルは多くみられれたのですが、yarnを使っているものがあまりなかったので備忘録を残しておきたいと思います。
ディレクトリ構成
ディレクトリの構成は下記のようになりました。
docker-server
├── node_modules
├── .dockerignore
├── Dockerfile
├── index.js
├── package.json
└── yarn.lock
手順
ソースコードを作成
作業ディレクトリとして、docker-serverを作成しました。
今回はnode.jsのexpressを使用します。
下記のコマンドを実行してnode.jsの初期化とexpressのインストールをします。
// nodeの初期化
yarn init
// nodeの初期化
yarn add express
続いてindex.jsファイルをルートディレクトリに配置して、hello worldを返すコードを記述します。
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(3000, () => console.log('Example app listening on port 3000!'))
ここでサーバーを立ち上げてみます。
// サーバーを立ち上げるコマンド
node index.js
これでlocalhost:3000にアクセスしてみてhello worldが表示されればhttpサーバーの構築は完了です。
Dockerfileの作成
ルートディレクトリ配下に下記Dockerfile
, .dockerignore
を作成します。
Dockerfile
FROM node:16-alpine3.15
WORKDIR /app
COPY . .
RUN yarn install
EXPOSE 3000
CMD ["node","index.js"]
.dockerignore
node_modules
Dockerイメージの作成
Dockerfileをもとにイメージを作成していきます。
$ docker build -t nodejs-docker .
// イメージが作られたか確認する
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nodejs-docker latest eeeee8ae04b 48 minutes ago 121MB
イメージが作られたのが確認できたらイメージの作成は成功です。
コンテナを起動する
$ docker run -p 3000:3000 -d nodejs-docker
これで無事に立ち上がりました。
localhost:3000にアクセスしてみるとhello worldが表示されれば完成です。
Discussion