Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8704

node+nodemonのdockerコンテナ

$
0
0

node + nodemon の開発用コンテナを作成した。実行環境はwin10とdocker-machine

.
├── app.js
├── docker-compose.yml
├── Dockerfile
├── package-lock.json
├── package.json
└── node_modules
#DockerfileFROM node:12WORKDIR /app# ホストのpackage.jsonとpackage-lock.jsonを# コンテナの/appにコピーCOPY ./package*.json ./CMD bash -c "npm install && npm run dev"
docker-compose.yml
version:'3.3'volumes:node_modules:services:app:build:.container_name:nodeports:-'80:8081'restart:alwaysvolumes:# ホストのdocker-compose.ymlがあるディレクトリを# コンテナの/appマウントする-'.:/app'# ただしnode_modulesだけ除外するためnode-mudulesボリュームを# コンテナの/app/node_modulesにマウントする# コンテナ内でnpm install してもホストのnode_modulesは空のまま-'node_modules:/app/node_modules'# 下2行はdocker run コマンドの-itオプションに相当する# 無いとコンテナが停止してしまうtty:truestdin_open:true
package.json
{"name":"hoge","version":"1.0.0","description":"","main":"app.js","scripts":{"start":"node ./app.js","dev":"nodemon -L ./app.js"},"dependencies":{"express":"^4.16.1"},"devDependencies":{"nodemon":"^2.0.4"},"author":"","license":"ISC"}

以下のようにしてDockerfileでnpm startするとnodemonは機能しなかった。startキーではダメ。さらに-Lオプションが必要。

 "scripts": {
    "start": "nodemon ./app.js"
  }

起動コマンドなど

コンテナ起動

docker-compose up -d

node_modulesボリュームは自動で作成される。project_node_modulesという名前になる。docker-machineのIPアドレスでブラウザからnodeサーバーにアクセスできる

nodemonが機能してることを確認する

docker-compose logs -f

または

docker logs node -f

コンテナ削除

docker-compose down --rmi all

--rmi all でイメージも削除される

node_modulesボリュームを削除

docker volue rm project_node_modules

ボリューム名を確認

docker volume ls

docker-machineのIPを調べる

docker-machine ls

または

docker-machine ip
docker-machine ip default

Viewing all articles
Browse latest Browse all 8704

Trending Articles