泊坞窗卷不起作用

我正在尝试使用docker-compose只与节点容器学习和使用另一个容器后。 我有一个节点的Dockerfile,我共享节点文件夹。

这是我的结构:

- front-end folder * docker-compose.yml - node folder * package.json * Dockerfile.json * server.js 

我的Dockerfile是来自dockerhub的节点:

 FROM buildpack-deps:jessie # gpg keys listed at https://github.com/nodejs/node RUN set -ex \ && for key in \ 9554F04D7259F04124DE6B476D5A82AC7E37093B \ 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ 0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \ FD3A5288F042B6850C66B31F09FE44734EB7990E \ 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ B9AE9905FFD7803F25714661B63B535A4C206CA9 \ C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ ; do \ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ done ENV NODE_VERSION 0.12.15 RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \ && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ && grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ && tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \ && rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt CMD [ "node" ] 

而我的docker-compose.yml是:

 version: '2' services: node: build: ./node ports: - '8080:8080' volumes: - ./node:/usr/local/src/node 

我可以运行命令docker-compose run node npm install any_package ,但是当我运行命令docker-compose run node npm install any_package docker-compose run node npm install我收到此错误:

 npm ERR! install Couldn't read dependencies npm ERR! Linux 4.4.12-boot2docker npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "i" npm ERR! node v0.12.15 npm ERR! npm v2.15.1 npm ERR! path /package.json npm ERR! code ENOPACKAGEJSON npm ERR! errno -2 npm ERR! package.json ENOENT, open '/package.json' npm ERR! package.json This is most likely not a problem with npm itself. npm ERR! package.json npm can't find a package.json file in your current directory. npm ERR! Please include the following file with any support request: npm ERR! /npm-debug.log 

而当我运行docker-compose run node npm install any_package ,文件夹node_modules应该出现在我的节点文件夹中。 这样对吗?

没有看到你的Dockerfile,目前还不清楚你正在把你的应用程序指向/ usr / local / src / node。 所以你的命令可能会在不同的位置查找文件。

假设您的Dockerfile将节点指向/ usr / local / bin / node,那么我怀疑您的问题是在主机卷上。 对于主机卷,我所看到的两个最常见的错误是具有不同uid的权限,并尝试从Docker主机VM内的开发人员计算机上装入文件夹。 Boot2docker让我觉得你正在经历后者。 用以下方法debugging:

 docker-compose run node ls -l /usr/local/bin/node 

如果显示一个空目录,那么它将从您的虚拟机挂载一个文件夹,而不是Windows / MacOS。 使用c:/ Users(Windows)或/ Users(MacOS)中的文件夹获取映射到虚拟机的共享。

如果它显示具有不同权限的文件,则可以通过在Docker主机上打开权限(chmod 777文件)或者通过使容器内的uid和gid镜像到主机的镜像来解决该问题(这应在安装之前完成Dockerfile中的任何应用程序)。

您的package.json位于/usr/local/src/nodenode (从/运行)预计它位于/