Хорошо, поэтому у меня есть приложение для узла, которое обращается к каталогу в его файловой структуре и делает что-то с ним. Я использую модуль «fs» для выполнения этого. Когда я запускаю контейнер из его образа, я получаю следующее сообщение об ошибке:Приложение Node не может читать файловую систему в Docker Image
Error: ENOENT, readdir './classes/cs395'
Я сразу подумал о целой куче вещей, которые могли бы быть неправильно, пока я не прикреплен к запущенному контейнера (после перезагрузки, потому что контейнер будет умереть при ошибке ... конечно). Когда я запустил приложение-узел изнутри контейнера ... он работал ... с ошибками.
Я считаю, что это, возможно, что-то делать с тем, как файловые системы обрабатываются при Докер изображения наслаиваются, но, когда он работал хорошо, когда я прикрепил к контейнеру я стал действительно запутался
EDIT:
файл ДЕЙСТВИТЕЛЬНО существует ... вот доказательство: Опять же, если (поскольку я прикреплен к контейнеру, как показано на рисунке), я запустил node server.js
и пинг 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
«UNTIL Я прикреплен к работающему контейнеру (после перезапуска) - существует ли файл до перезагрузки при новой установке? –
см. Мое новое редактирование – frankgreco