gpt4 book ai didi

node.js - 图 : Cannot find module - docker run works

转载 作者:搜寻专家 更新时间:2023-10-31 22:45:36 25 4
gpt4 key购买 nike

我正在尝试使用最小 Node 应用程序运行 fig up

(编辑:从 fig.yml 中删除卷)

图.yml:

example:
build: .
command: node server.js
ports:
- "4000:4000"
links:
- postgres
postgres:
image: postgres

docker 文件:

FROM node

ADD . /src
WORKDIR /src
RUN npm install

服务器.咖啡:

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 build 按预期进行。 fig up 失败:

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

fig 尝试运行此容器的方式有何不同?

这些文件可在此处获得:https://github.com/skyl/docker-example

最佳答案

区别在于。在 docker run 示例中,您没有指定任何卷,但在您的 fig.yml 中,您将当前工作目录安装到 /src在容器中,因此在构建期间添加的 /src 被卷屏蔽,并且 node_modules 不可用。

我认为您应该可以从 fig.yml 中删除 volumes,否则您还必须在容器外部运行 npm install。

关于node.js - 图 : Cannot find module - docker run works,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26824854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com