node.js(Express)をDockerで使う最低限の方法メモ。
準備
作業場の確保
cd
mkdir docker-node-test
cd docker-node-test
モジュールのインストールと必要なファイルの生成
Expressをインストールします。あと、index.jsを作ります。
npm install express
touch index.js
実装(最低限)
index.jsに実装していきます。一旦最低限。
index.js
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello Node.js");
});
app.listen(3000, () => {
console.log("Start server on port 3000.");
});
動作確認
早速動作確認。
node index.js
ブラウザで以下のURLを確認。Hello Node.jsと表示されていればOK。
http://localhost:3000 にアクセス。
Docker Imageの生成と事項
最低限のnodeアプリができたので、Docker Imageにしてみます。
Dockerfileと.dockerignoreファイルを生成。
touch Dockerfile .dockerignore
Dockerfile
bullseye-slimを利用してみます。
Dockerfile
FROM node:18-bullseye-slim
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node","index.js"]
意味は、、、
- ベースイメージとしてnode:18-bullseye-slimを利用
- nodeの動作ディレクトリとして/usr/src/appを利用
- package.jsonとpackage-lock.jsonをコピー
- npm installを実行
- ファイルを全コピー(但し、ignoreの記述のもの以外)
- port 3000を開放
- node index.jsを実行
です。
.dockerignore
node_modulesやlogはコピーしなくていいのでignoreファイルに記述。
.dockerignore
node_modules
npm-debug.log
Imageをビルド
Dockerのイメージをビルドします。my_nodeという名前にしてみます。
docker build -t my_node .
確認
イメージができたか確認します。
docker images
では実行。
docker run --name my_node_app -p 3000:3000 -d my_node
http://localhost:3000 にアクセスして、Hello Node.jsって見えればOK。
ここまでのファイル構造
.
├── .dockerignore
├── Dockerfile
├── index.js
├── node_modules
├── package-lock.json
└── package.json