尽管Project位于docker容器上,但我的IDE上还有Linting功能

Mr *_*r A 6 node.js docker eslint docker-compose visual-studio-code

我有一个在docker上运行的React NodeJS项目.我可以通过这里的文章来使它工作.

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

我的工作只是通过运行只在我的主机上安装依赖项,npm install --only=dev但每次重新启动容器时它都会消失.

这是我的Github回购的副本.

Tar*_*ani 7

所以这里的东西很少,你需要偏离那篇文章.因为该文章使用匿名卷node_modules.在您的情况下,您也希望devDepencies也可以来到您的主机,因此您可以使用它们.

现在,Node将不允许两个不同的文件夹用于依赖项,直到您使用requirejs模块并在其中配置多个源.所以对于你的开发图像你想要的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
Run Code Online (Sandbox Code Playgroud)

然后更新 docker-compose.yml

react:
  build: .
  ports:
   - 3100:3100
  volumes:
    - .:/home/app/react
    - ./node_modules:/home/node_modules
Run Code Online (Sandbox Code Playgroud)

现在,如果你做docker-compose upnode_modules是空的.那么每当你想要刷新包时你应该做什么

docker-compose run react yarn
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

使用NODE_PATH我们改变的位置node_modules,以/home/node_modules在容器内.然后docker-compose我们将相同的映射到./node_modules主机上.所以我们的第一个docker-compose run react yarn,将填充此文件夹中的所有依赖项.

从下次你刚开始docker-compose up.每当您想要更新依赖关系时,您可以在react容器内运行"yarn",也可以docker-compose run ...再次运行该命令