方法としては、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": {
}
}
※ 上記ファイルのコードは、必要な部分を抜粋なので、動作確認していない。