当我尝试构建并将本地源代码连接到Container时,我遇到了一个问题。如果你能提出建议,我将不胜感激。
这是我的每个附加屏幕截图的Docker文件。
我想要做的基本上是,我想创建一个NodeJs容器并将我的本地nodejs源代码连接到Container中。好像我的本地源代码文件夹没有安装到Volume中,
另外,值得一提的是这里。我看到一些博客,它说将版本降级到Docker版本为1.6将解决此问题。这是正确的吗?
请将附带的Dockerfile视为图像。
请帮忙,我们将不胜感激。
谢谢。
答案 0 :(得分:0)
问:为什么我的应用程序在docker容器中失败并显示错误Cannot find module 'express'
?
A:正如评论中所强调的那样 - 这是由于OP启动其容器的方式。顺便提一下,OP已将他当前的工作目录(即他的NodeJS应用程序的结帐)映射到容器的/var/www
目录中,在该目录中,他在构建映像期间执行了npm install
。这会导致当前工作目录中的文件覆盖之前构建的图像,因为OP在当前工作目录中没有完成npm install
,因此{{1}失败了没有安装依赖项。
问:您能否向我提供解决方案,如何将我的本地资源安装到容器中
A:据我所知,我们的评论。你已经这样做了。 express
二进制文件中的-v
选项允许您将主机的文件系统挂载到容器中。
我不确定你的实际用例是什么。如果您希望容器使用其docker
进程从您的计算机(主机)的文件系统运行代码,那么您的原始命令Node
应该完成这项工作。您只需在当前工作目录上运行docker run -d -p 80:80 -v $(pwd):/var/www ...
即可。因为无论您在主机上执行什么操作,文件更改都会反映到容器的npm install
目录中。