Node.js 使用;npm安装“;用于Docker中的开发环境

Node.js 使用;npm安装“;用于Docker中的开发环境,node.js,reactjs,docker,Node.js,Reactjs,Docker,我试图在Docker中开发一个ReactJS项目,该项目将在整个团队中共享 然而,我很难理解这是如何工作的,因为我想将我的应用程序目录批量共享到容器中,但似乎我必须将package.json复制到容器中,以便npm安装,然后运行nom run start 我的目录结构是: app/ src/ public/ node_modules/ package.json docker/ admin/ dockerfile docker-compose.yml dockerf

我试图在Docker中开发一个ReactJS项目,该项目将在整个团队中共享

然而,我很难理解这是如何工作的,因为我想将我的
应用程序
目录批量共享到容器中,但似乎我必须将
package.json
复制到容器中,以便
npm安装
,然后运行
nom run start

我的目录结构是:

app/
  src/
  public/
  node_modules/
  package.json
docker/ 
  admin/
    dockerfile
docker-compose.yml
dockerfile

FROM node:7.8.0

WORKDIR /app
RUN npm install

EXPOSE 3000
CMD npm run start
docker-compose.yml

version: '3'
services:
  admin:
    build:
      context: ./docker/admin
      dockerfile: dockerfile
    image: project/admin
    volumes:
     - ./app:/app
    ports:
        - "3000:3000"
所以问题是:当dockerfile运行时,
npm安装
失败,因为来自
docker compose的卷共享还没有发生,所以它认为没有
package.json
。因此,听起来我必须将
package.json
复制到容器中,就进行更改而言,这对于开发来说并不理想

此外,我相信您只能将
文件从dockerfile所在的同一目录复制到容器中,这意味着我必须将dockerfile移动到项目的根目录中。我不喜欢这个想法,因为我在这个项目中还有其他容器,它们也需要DockerFile


在Docker内部处理节点开发是否有更好的解决方案?本质上,我希望团队中的其他开发人员能够尽可能地简化“启动并运行”过程

在开发过程中,您需要:

  • 重建前端
  • 重新启动Node.js应用程序
  • 重新运行您的测试
  • 调试代码
若您在开发过程中尝试将文件放入Docker容器,那个么您将在开发过程中产生开销。您的计算机和开发人员将花费更多的时间,然后使用native usage node.js

这就是为什么在开发期间在Docker中包装Node.js是一种不好的做法。

开发期间何时需要Docker

  • 设置具有外部依赖关系的开发人员/CI/QA环境,如MongoDB、Redis等。
    docker compose
    是目前最好的解决方案
  • 制作可交付工件
    Dockerfile
    +
    。DockerRignore
    将描述如何制作您的工件

嗯,有趣的是,我不知道这不是一种首选做法。这在Node或Docker社区的其他地方有记录吗?我在conference/meetup视频中看到过好几次,但我不记得有任何关于这方面的文档。这只是常识,不是文档的一部分。