我对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的仓库,所有软件包都在那里。
docker-compose up -d
我也如何在计算机上的容器中获取内容?
谢谢
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生成的npm_modules )。现在,如果您需要更多详细信息,请让我。
npm install
docker build
编辑 。因此,无需在OSX中使用npm,您可以:
docker cp <container-id>:/path/to/node-modules ./local-node-modules/
cp
编辑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:可以通过更好的方式(例如最佳做法等)来做同样的事情
docker-compose up
我在OSX中,它对我有用。