好吧,我有一个节点应用程序,用于访问文件结构中的目录并执行其中的操作。我正在使用'fs'模块来完成这个任务。当我从它的形象运行的容器中,我得到以下错误:节点应用程序无法读取Docker映像中的文件系统
Error: ENOENT, readdir './classes/cs395'
我马上想到的事情一大堆,可能是错的,直到我连接到正在运行的容器(重新启动它,因为容器后,将死于错误......当然)。当我从容器内启动节点应用时,它工作..没有错误。
我认为它可能是与当搬运工图像分层文件系统的处理方式,但是当它工作得很好,当我连接到容器我变得真的很困惑
编辑:
的文件是否存在...这里是证明: 同样,如果(因为我连接到容器如图所示)我运行node server.js
和ping IP:端口一切都很好!该目录被识别!但不是如果从图像中分离出来。
为了显示文件仍然存在,让我们开始我们停止的容器并将其附加到它上面......您可以看到文件仍然存在。 (需要注意的是启动容器不会重新创建它不存在,当它停止了文件......它只是拿起它离开的地方)
万一有帮助,这里是我如何使用的 'FS' 模块:
var p = "./classes/cs395";
//READ ALL FILES FROM A DIRECTORY AND EMIT THE NAME OF THE FILE
fs.readdir(p, function(err, files){
if (err) throw err;
files.forEach(function (file) {
if (files.length == 1 && file == '.DS_Store'){
io.emit('receive_file', null);
} else {
fs.stat(p + '/' + file, function(err, stats){
if (err) throw err;
if (stats.isFile() && file != '.DS_Store'){
var ext = path.extname(file);
var name = path.basename(p + '/' + file, ext);
io.emit('receive_file', name);
}
});
}
});
if (files.length == 0) {
io.emit('receive_file', null);
}
console.log(files);
});
如果仅仅是那样的问题。该文件是否存在....请参阅我编辑的问题。 – frankgreco
“直到我连接到运行容器(后重新启动?” - 没有文件之前重新启动的一个新的存在安装 –
看到我的新的编辑 – frankgreco