Edited at
DockerDay 18

Docker で nodemon を使って、サーバー再起動を自動化する

More than 1 year has passed since last update.

方法としては、nodemon を使って、volumes でコンテナー内のファイルを編集できるようにして、index.js の変更を監視してもらうようにした。


docker-compose.yml

version: '2'

services:
IMAGE_NAME:
build: .
restart: on-failure
environment:
- NODE_ENV
tty: true
stdin_open: true
depends_on:
volumes:
- ./package.json:/usr/src/app/package.json
- ./index.js:/usr/src/app/index.js


package.json の bin を設定することで、コマンドを設定できるので、global インストールさせずに nodemon コマンドを叩いている。

Dockerfile ファイルの最後の行で定義した yarn start コマンドが nodemon index.js にあたるようになるので、dockerを docker-compose up で立ち上げたときに、監視されて自動で再起動される。

FROM node:8

MAINTAINER Ryosuke Miyamoto <miyamoto@ndinc.jp>

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/

RUN yarn install

COPY . /usr/src/app/

EXPOSE 3000

CMD ["yarn", "start"]


package.json

{

"name": "bot",
"version": "1.0.0",
"description": "",
"main": "index.js",
"repository": {
"type": "git",
"url": ""
},
"scripts": {
"start": "nodemon index.js",
},
"keywords": [
],
"author": "yahsan2",
"license": "MIT",
"bin": {
"nodemon": "node_modules/nodemon/bin/nodemon.js"
},
"dependencies": {
"nodemon": "^1.13.3",
},
"devDependencies": {
}
}


※ 上記ファイルのコードは、必要な部分を抜粋なので、動作確認していない。