Docker / bin / bash:找不到nodemon:命令

我试图从我的主机挂载我的工作节点代码到docker容器中,并使用docker-compose使用nodemon运行它。 但容器似乎无法findnodemon。 注意:我的主机没有安装节点或npm。

这里是我的项目(testing)的根文件夹中的文件。 (这只是一个粗略的草案)

Dockerfile

FROM surenderthakran/nodejs:v4 ADD . /test WORKDIR /test RUN make install CMD make run 

Makefile文件

 SHELL:=/bin/bash PWD:=$(shell pwd) export PATH:= $(PWD)/node_modules/.bin:$(PWD)/bin:$(PATH) DOCKER:=$(shell grep docker /proc/1/cgroup) install: @echo Running make install...... @npm config set unsafe-perm true @npm install run: @echo Running make run...... # Check if we are inside docker container ifdef DOCKER @echo We are dockerized!! :D @nodemon index.js else @nodemon index.js endif .PHONY: install run 

泊坞窗,compose.yml

 app: build: . command: make run volumes: - .:/test environment: NODE_ENV: dev ports: - "17883:17883" - "17884:17884" 

的package.json

 { "name": "test", "version": "1.0.0", "description": "test", "main": "index.js", "dependencies": { "express": "^4.13.3", "nodemon": "^1.8.0" }, "devDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [ "api", "nodejs", "express" ], "author": "test", "license": "ISC" } 

index.js

 'use strict'; var express = require('express'); 

我使用docker-compose build我的图像。 它成功完成。 但是当我尝试使用docker-compose up构build它docker-compose up ,我得到:

 Creating test_app_1... Attaching to test_app_1 app_1 | Running make run...... app_1 | We are dockerized!! :D app_1 | /bin/bash: nodemon: command not found app_1 | make: *** [run] Error 127 test_app_1 exited with code 2 Gracefully stopping... (press Ctrl+C again to force) 

任何人都可以请指教?

注意:我的基础镜像surenderthakran/nodejs:v4可以在这里find: https : //github.com/surenderthakran/dockerfile_nodejs/blob/master/Dockerfile

问题已经解决。 问题归结为我没有在安装的卷中的node_modules

基本上,在执行docker-compose build ,图像是正确构build的,将实际代码添加到图像中,并通过npm install在项目根目录下创buildnode_modules文件夹。 但是使用docker-compose up代码被安装在项目根目录下,它覆盖了之前添加的代码,包括新创build的node_modules文件夹。

所以作为一个解决scheme,我妥协安装nodejs在我的主机上,并做一个npm install在我的主机上。 所以当我的代码被挂载时,我的项目根目录中仍然有我的node_modules文件夹,因为它也是从我的主机挂载的。

不是一个非常优雅的解决scheme,但由于它是一个开发设置,我准备妥协。 在生产中,我将使用nodemon docker buildnodemon docker run来设置,并且不会使用nodemon

如果有人可以build议我一个更好的解决scheme,我将是伟大的。

谢谢!!