尽pipe项目位于泊坞窗容器上,但在我的IDE上仍可使用Lintingfunction

我有一个在Docker上运行的React NodeJS项目。 我能够通过在这里发表文章来实现它的工作。

问题是,我的主机中的node_modules是空的。 将volumes更改为/www/project/node_modules:app/node_modules将使模块在/www/project/node_modules:app/node_modules容器中不可用。

我的工作就是通过运行npm install --only=dev只安装在主机上的依赖关系,但是每次重启容器都会消失。

这是我的Github回购的副本,这是做到这一点。

所以这里没有什么东西,你需要偏离那篇文章。 因为这些文章使用匿名卷node_modules 。 在你的情况下,你想devDepencies也来到你的主机,所以你可以使用它们。

现在,Node将不允许两个不同的文件夹进行依赖关系,直到您使用requirejs模块并在其中configuration多个源文件。 所以对于你的开发图像,你想要的是yarn不在Dockerfile内运行。 而是在容器启动时运行

所以我将把Dockerfile改为

 FROM node:7.10.1 ENV HOME=/home/app COPY package.json $HOME/react/ COPY scripts $HOME/react/scripts/ RUN npm install yarn -g WORKDIR $HOME/react ENV NODE_PATH=/home/node_modules VOLUME $NODE_PATH CMD yarn start:dev 

然后更新docker-compose.yml

 react: build: . ports: - 3100:3100 volumes: - .:/home/app/react - ./node_modules:/home/node_modules 

现在,如果您执行node_modules docker-compose upnode_modules为空。 所以,当你想刷新软件包时你应该做什么

 docker-compose run react yarn docker-compose up -d 

使用NODE_PATH我们将容器内的node_modules的位置node_modules/home/node_modules 。 然后在./node_modules docker-compose我们将其映射到主机上的./node_modules 。 所以我们的第一个docker-compose run react yarn ,将填充这个文件夹与所有的依赖关系。

从下次你运行docker-compose up 。 任何时候你想更新依赖关系,你可以在react容器里面运行“yarn”,或者你再次运行docker-compose run ...命令