2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Node.jsをDockerで使う

Last updated at Posted at 2022-11-10

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
2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?