好吧,我有一個節點應用程序,用於訪問文件結構中的目錄並執行其中的操作。我正在使用'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