Docker で Node.js 環境構築
設定ファイル
作業フォルダを作成し、Dockerfile
とdocker-compose.yml
を作成する。
Dockerfile
# hub.docker.comから公式で用意されたイメージをベースとする FROM node:10.13-alpine # カレントディレクトリを app に WORKDIR /app # デフォルトで node が起動するので sh を代わりに起動 CMD ["sh"] # ホストのファイルをコンテナの作業ディレクトリに移行 ADD . /app # ポート3000番を開放する EXPOSE 3000
docker-compose.yml
version: '3' services: app: build: . volumes: - ./app:/app tty: true ports: - "8009:3000"
ビルド
$ docker-compose build
Successfully が出れば 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 express
app/app.js
も作る。
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