在 Docker 中从 Node 应用程序访问文件系统
Access filesystem from Node app in Docker
我在尝试访问 docker 容器内的文件系统时遇到一些问题;我一直遇到这个问题:
fs.access(path, fs.R_OK & fs.W_OK, function (err) {
^
TypeError: Object #<Object> has no method 'access'
我想做的是在创建文件之前检查文件系统中的访问权限。
路径和错误由以下代码生成:
var fs = require('fs');
var path = require('path');
var rootPath = path.dirname(require.main.filename);
fs.access(rootPath, fs.R_OK & fs.W_OK, callback);
我该如何解决这个问题?
运行:
docker exec -it [name of container] bash
然后:
node --version
并确保您所在的节点 运行 与 docker 之外的节点相同。在我的例子中
RUN apt-get install -y nodejs
我以前在 docker 中安装节点 docker v0.10.25
不支持我使用的 fs
模块。
我通过将以下两个命令添加到我的 Dockerfile 来修复它:
RUN curl --silent --location https://deb.nodesource.com/setup_0.12 | sudo bash -
RUN sudo apt-get install --yes nodejs
注意:
我的修复是 ubuntu docker 图片。
我在尝试访问 docker 容器内的文件系统时遇到一些问题;我一直遇到这个问题:
fs.access(path, fs.R_OK & fs.W_OK, function (err) {
^
TypeError: Object #<Object> has no method 'access'
我想做的是在创建文件之前检查文件系统中的访问权限。
路径和错误由以下代码生成:
var fs = require('fs');
var path = require('path');
var rootPath = path.dirname(require.main.filename);
fs.access(rootPath, fs.R_OK & fs.W_OK, callback);
我该如何解决这个问题?
运行:
docker exec -it [name of container] bash
然后:
node --version
并确保您所在的节点 运行 与 docker 之外的节点相同。在我的例子中
RUN apt-get install -y nodejs
我以前在 docker 中安装节点 docker v0.10.25
不支持我使用的 fs
模块。
我通过将以下两个命令添加到我的 Dockerfile 来修复它:
RUN curl --silent --location https://deb.nodesource.com/setup_0.12 | sudo bash -
RUN sudo apt-get install --yes nodejs
注意: 我的修复是 ubuntu docker 图片。