Node.js 图:找不到模块-docker run works
我正在尝试使用最小节点应用程序运行Node.js 图:找不到模块-docker run works,node.js,docker,fig,Node.js,Docker,Fig,我正在尝试使用最小节点应用程序运行fig up (编辑:从图yml中删除的卷) 图yml: example: build: . command: node server.js ports: - "4000:4000" links: - postgres postgres: image: postgres Dockerfile: FROM node ADD . /src WORKDIR /src RUN npm install server.coffee: e
fig up
(编辑:从图yml中删除的卷)
图yml:
example:
build: .
command: node server.js
ports:
- "4000:4000"
links:
- postgres
postgres:
image: postgres
Dockerfile:
FROM node
ADD . /src
WORKDIR /src
RUN npm install
server.coffee:
express = require 'express'
app = express()
app.get "/", (req, res) ->
res.send "Hello World"
server = app.listen 4000, () ->
console.log 'Listening on port %d', server.address().port
fig构建
按预期进行<代码>图向上失败,原因是:
example_1 | module.js:340
example_1 | throw err;
example_1 | ^
example_1 | Error: Cannot find module '/src/server.js'
example_1 | at Function.Module._resolveFilename (module.js:338:15)
example_1 | at Function.Module._load (module.js:280:25)
example_1 | at Function.Module.runMain (module.js:497:10)
example_1 | at startup (node.js:119:16)
example_1 | at node.js:906:3
我不明白的是,我可以在一个容器(fig构建)中运行服务器,而不需要fig:
$ docker run -it dockerexample_example /bin/bash
root@58d25759047a:/# node /src/server.js
Listening on port 4000
或
或
fig试图运行此容器的方式有什么不同
这些文件在此处可用:不同之处在于
卷。在docker run
示例中,您没有指定任何卷,但在fig.yml
中,您正在将当前工作目录装载到容器中的/src
,因此在生成过程中添加的/src
被卷屏蔽,节点模块不可用
我认为您可以从fig.yml
中删除volumes
,否则您也必须在容器外部运行npm安装。注意,我必须强制docker rmi
错误映像。fig up
当前在卷定义更改方面存在问题
$ docker run -it dockerexample_example
Listening on port 4000
$ docker run -it -p 4000:4000 dockerexample_example
Listening on port 4000