我正在尝试使用最小的节点应用运行图.
(编辑:从fig.yml删除卷)
fig.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
无花果构建按预期进行.图失败了:
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
我不明白的是,我可以在一个容器(没有图形)中运行服务器而不用图:
$docker run -it dockerexample_example /bin/bash
root@58d25759047a:/# node /src/server.js
Listening on port 4000
要么
$docker run -it dockerexample_example
Listening on port 4000
要么
$docker run -it -p 4000:4000 dockerexample_example
Listening on port 4000
图试图运行这个容器的方式有什么不同?
这些文件可在此处获得:https://github.com/skyl/docker-example
最佳答案
不同的是数量.在docker run示例中,您没有指定任何卷,但是在fig.yml中,您正在将当前工作目录挂载到容器中的/ src,因此在构建期间添加的/ src将被卷掩盖,并且node_modules不可用.
我认为你应该可以从fig.yml中删除卷,否则你也必须在容器外运行npm install.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。