🍎

Dockerを使ってnode.js(yarn)をコンテナ化してみた

2023/01/15に公開

概要

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