docker-compose在node_modules上的卷,但为空

迈克·布汀(Mike Boutin)

我是Docker的新手,我想在我的计算机上映射node_modules文件夹(用于调试)。

这是我的docker-compose.yml

web:
  build: .
  ports:
    - "3000:3000"
  links:
    - db
  environment:
    PORT: 3000
  volumes:
    - .:/usr/src/app
    - /usr/src/app/node_modules
db:
  image: mongo:3.3
  ports:
    - "27017:27017"
  command: "--smallfiles --logpath=/dev/null"

我在Mac上使用Docker。当我运行docker-compose up -d全部时,一切正常,但是它在我的计算机上创建了一个node_modules文件夹,但是它是空的。我进入了容器和ls node_modules的仓库,所有的软件包都在那里。

我如何也可以在计算机上的容器中获取内容?

谢谢

罗伯特

TL; DR工作示例,克隆并尝试: https : //github.com/xbx/base-server


首先(在运行容器之前),需要在计算机中使用node_modules(外部映像)进行调试。

如果只想调试node_modules:

volumes:
    - /path/to/node_modules:/usr/src/app/node_modules

如果要调试代码和node_modules,请执行以下操作:

volumes:
    - .:/usr/src/app/

请记住,您npm install至少需要在容器外运行一次(或复制docker build生成的node_modules目录)。现在,如果您需要更多详细信息,请让我。


编辑因此,无需在OSX中使用npm,您可以:

  1. docker build然后docker cp <container-id>:/path/to/node-modules ./local-node-modules/然后在您的docker-compose.yml中挂载这些文件,并对您想要的任何内容进行故障排除。
  2. 或者,docker build在那里(Dockerfile)npm install在另一个目录中执行。然后在您的命令(CMD或docker-compose命令)中将副本(cp复制到正确的目录,但是此目录从您的计算机上空挂载(docker-compose.yml中的一个卷),然后对所需的任何内容进行故障排除。

编辑2。(选项2)工作示例,克隆并尝试: https : //github.com/xbx/base-server我在您的仓库中自动完成了所有操作。

Docker文件

FROM node:6.3

# Install app dependencies
RUN mkdir /build-dir
WORKDIR /build-dir
COPY package.json /build-dir
RUN npm install -g babel babel-runtime babel-register mocha nodemon
RUN npm install

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN ln -s /build-dir/node_modules node_modules

# Bundle app source
COPY . /usr/src/app

EXPOSE 1234
CMD [ "npm", "start" ]

docker-compose.yml

web:
  build: .
  ports:
    - "1234:1234"
  links:
    - db # liaison avec la DB
  environment:
    PORT: 1234
  command: /command.sh
  volumes:
    - ./src/:/usr/src/app/src/
    - ./node_modules:/usr/src/app/node_modules
    - ./command.sh:/command.sh
db:
  image: mongo:3.3
  ports:
    - "27017:27017"
  command: "--smallfiles --logpath=/dev/null"

command.sh

#!/bin/bash

cp -r /build-dir/node_modules/ /usr/src/app/

exec npm start

请克隆我的仓库,然后做docker-compose up它可以满足您的需求。PS:可以通过更好的方式(例如最佳做法等)来做同样的事情

我在OSX中,它对我有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在node_modules上的docker-compose卷,但为空

来自分类Dev

docker-compose卷为空

来自分类Dev

即使我在docker run时将node_modules添加为卷,也无法在docker上找到模块

来自分类Dev

Docker卷为空

来自分类Dev

Docker卷为空

来自分类Dev

如何在Docker构建上缓存node_modules?

来自分类Dev

Docker 构建不会在 `node_modules` 卷中安装包

来自分类Dev

docker 容器中的空白 node_modules

来自分类Dev

Docker / Docker-Compose中的NFS卷

来自分类Dev

卷上的Docker Compose使用环境变量

来自分类Dev

使用 docker-compose 在卷上保存 mongodb

来自分类Dev

卷和docker-compose

来自分类Dev

在Docker内部将npm安装后访问node_modules

来自分类Dev

Docker 挂载和空卷

来自分类Dev

docker 在 docker 中 docker compose

来自分类Dev

OSX上的docker缓慢的卷

来自分类Dev

Docker-compose命名挂载卷

来自分类Dev

docker-compose删除共享卷

来自分类Dev

docker-compose无法正确绑定卷

来自分类Dev

在docker-compose中创建卷

来自分类Dev

通过Docker Compose重用现有卷

来自分类Dev

通过Docker Compose重用现有卷

来自分类Dev

使用docker-compose创建命名的docker卷?

来自分类Dev

何时可以使用docker compose提供docker卷?

来自分类Dev

Docker 卷中的 Docker 机密

来自分类Dev

docker run 期间的 docker 卷

来自分类Dev

如何在Docker Compose中为每个容器创建单独的卷

来自分类Dev

周末后无法在 docker-compose 中将文件挂载为卷,为什么?

来自分类Dev

在docker-compose ELK堆栈上重新使用现有卷