使用Volumes概念(在Docker VM中运行的节点应用程序)自动呈现代码中所做的更改

时间:2016-05-06 16:00:53

标签: node.js docker docker-compose dockerfile

现在.Jade文件中的更改会在Web UI上自动呈现,但是node.js文件中的代码更改不会呈现,到目前为止,这是我的docker-compose.yml文件

 www:
 build: .
 volumes: 
  - ./:/app_ww
 ports:
  - "80:3000"
 expose: 
  - "80" 

这是我的dockerfile

FROM node:4.4.1

RUN mkdir -p app_ww

WORKDIR /app_ww

ADD package.json package.json

RUN npm install

ADD . .

CMD ["npm","start"]

我没有完成所需的工作。即, 自动呈现代码中的更改。所以,这是通过$docker-compose up --build构建存储库在系统中创建的卷列表:

$ docker volume ls

DRIVER VOLUME NAME
local  app_ww 

Package.JsOn文件:

{
  "name": "node_restapi",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.13.2",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "express": "~4.13.1",
    "jade": "~1.11.0",
    "morgan": "~1.6.1",
    "less-middleware": "~2.1.0",
    "serve-favicon": "~2.3.0"
  }
}

注意:容器运行正常,但卷的概念不起作用, 问题:上述主题中提到过。

2 个答案:

答案 0 :(得分:1)

如果您正在使用泊坞机,我认为该卷是从"机器"您创建而不是本机文件系统。您必须跳过几个环节才能将本机fs目录安装到docker-machine实例。你在用什么操作系统?这似乎在此处记录为间歇性问题:https://github.com/docker/compose/issues/2247

答案 1 :(得分:0)

我找到了我面临的问题的解决方案。 在这里,

npm install -g nodemon

在docker文件中包含带有-g(全局)标志的nodemon,对我来说非常适合。 谢谢@JHarris,@ Aditya,@ShanShan

此致 穆罕默德·阿布巴克尔