如何在多个docker容器之间共享主机目录?

时间:2016-08-10 11:41:31

标签: node.js docker dockerfile microservices

这是我的目录结构for docker microservices 。我需要做的是将我的主机上的lib文件夹中的某些文件共享到容器中。这些是在两个容器中运行应用程序所需的lib文件。这是我在其中一个容器propinfo-finder中的一个docker文件中的内容

FROM alpine:3.3

RUN apk add --update nodejs

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY . /usr/src/app
RUN npm install

EXPOSE 3000

WORKDIR /usr/src/app
CMD node index.js

我使用此命令构建docker镜像docker build -t nodeapp/premcal .构建过程成功。然后我使用此命令将目录bin映射/挂载到容器以使其运行 从bin文件夹所在的父目录

docker run -v $PWD/lib:/usr/src/app -p 3010:3000 -i nodeapp/premcal 运行后我收到此错误



module.js:328
    throw err;
    ^

Error: Cannot find module '/usr/src/app/index.js'
    at Function.Module._resolveFilename (module.js:326:15)
    at Function.Module._load (module.js:277:25)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3




主机是物理Ubuntu机器。

任何人都可以告诉我如何让它消失。我只有2小时的node.js和docker环境经验。 谢谢。

3 个答案:

答案 0 :(得分:0)

我不是node.js的专家,但是您尝试运行index.js但是在lib文件夹中没有index.js。如果你想运行disco.js,那就是:

docker run -v $PWD/lib:/usr/src/app -p 3010:3000 -i \
  davesrepo/dynamo node disco.js

答案 1 :(得分:0)

运行docker run -v $PWD/lib:/usr/src/app -p 3010:3000 -i davesrepo/dynamo bash并查看/ usr / src / app deriectory。

我猜您没有成功安装lib文件夹或存在权限错误。

答案 2 :(得分:0)

您可以使用仅数据容器在多个容器之间共享目录。

您可以找到详细信息herehere甚至更好,here