LoginSignup
20
22

More than 5 years have passed since last update.

docker-composeを使ってnode.js開発環境を整える

Last updated at Posted at 2015-11-03

docker-composeを使ってnode.js開発環境を整える

Docker Language Stackのgolangなどを見るとcontainerの中でbuildやmakeする使い方が書かれている。

$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.3 go build -v
$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.3 make

これをdocker-composeを使ったらもう少し楽にできるような気がしたので、nodeの開発環境をdocker-composeを使ってみたらどうなるか?の試み。composeの使い方としては亜流な気もするが(汗。コードはnode-dev-container参照。

Dockerfile

必要なツールのインストールされた docker image を作っておく。
$ docker build -t node-dev .

Dockerfile
FROM node:latest

# install tools
RUN npm install -g gulp \
&& npm install -g coffee-script \
&& npm cache clear

docker-compose

開発に必要なコマンド(node/npm/gulp)や初期インストール用のコマンド(express-install/gulp-install) をserviceとして定義する。

docker-compose.yml
default: &default
  image: node-dev
  volumes:
    - $PWD:/usr/src/app
  working_dir: /usr/src/app

node:
  <<: *default
  entrypoint: ['node']
  ports:
    - "3000:3000"

npm:
  <<: *default
  entrypoint: ['npm']

gulp:
  <<: *default
  entrypoint: ['gulp']

init:
  <<: *default
  command: npm init

express-install:
  <<: *default
  command: npm install express --save

gulp-install:
  <<: *default
  command: npm install gulp gulp-coffee --save-dev

例えば、expressで開発するなら

$ docker-compose run --rm init   # package.jsonを作る
$ docker-compose run --rm express-install  # express.js インストール
(app.jsを実装して)
$ docker-compose run --service-ports node app.js # node 実行

まとめ

docker-composeのone-offコマンドを使ってcontainer内の開発環境をうまく使えないかと試してみたが、dockerコマンドから使うのに比べてさほど「楽」にはならなかった。workflowに必要なコマンドやvolumeのマウント、portのマッピングをdocker-compose.ymlにまとめておける点に多少メリットはある気もする。

あと container内で gulp の watch が何故かうまく動かない…

20
22
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
20
22