Docker で Node.js 環境構築

設定ファイル
作業フォルダを作成し、Dockerfile と docker-compose.yml を作成する。
# hub.docker.comから公式で用意されたイメージをベースとする
FROM node:10.13-alpine
# カレントディレクトリを app に
WORKDIR /app
# デフォルトで node が起動するので sh を代わりに起動
CMD ["sh"]
# ホストのファイルをコンテナの作業ディレクトリに移行
ADD . /app
# ポート3000番を開放する
EXPOSE 3000
version: '3'
services:
app:
build: .
volumes:
- ./app:/app
tty: true
ports:
- "8009:3000"
ビルド
$ docker-compose buildSuccessfully が出れば OK。
コンテナ起動
$ docker-compose up -d起動したことは以下で確認できる。
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------
doc-node01_app_1 sh Up 0.0.0.0:8009->3000/tcpコンテナにログイン
$ docker exec -it doc-node01_app_1 /bin/shまたは 以下の docker-compose コマンドも使えそうだが、
ポートフォワードが上手く出来なかったので、上記の docker コマンドを使う。
$ docker-compose run --rm appコンテナ内で app.js を動かす
コンテナ内に express のプロジェクトを作る。
/app # npm init
.../app # npm install expressapp/app.js も作る。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World');
});
app.listen(3000);
サーバを起動する。
/app # node app.js
...
その他コマンド
コンテナの停止
$ docker stop [コンテナID]$ docker-compose downコンテナ ID の確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
793b28bc67f9 doc-node01_app "sh" 37 minutes ago Up 37 minutes 0.0.0.0:8009->3000/tcp doc-node01_app_1