Docker – 用于开发环境的npm安装

我试图在Docker中为了开发目的而开发一个ReactJS项目,这个项目将在一个团队中共享。

然而,我很难理解这是如何工作的,因为我想大量共享我的app目录到容器中,但似乎我必须将package.json复制到容器中以便npm install ,因此运行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 

泊坞窗,compose.yml

 version: '3' services: admin: build: context: ./docker/admin dockerfile: dockerfile image: project/admin volumes: - ./app:/app ports: - "3000:3000" 

所以问题是:当dockerfile运行时, npm install失败,因为docker docker-compose共享卷尚未发生,所以认为没有package.json 。 所以这听起来像我必须将package.json复制到容器中,这对于开发而言并不理想。

此外,我相信你只能在与dockerfile相同的目录中COPY文件到容器中,这意味着我必须将dockerfile移动到项目的根目录。 我不喜欢这个想法,因为我在这个项目中也有其他的容器,他们也需要dockerfiles。

是否有更好的解决scheme来处理Docker中的Node开发? 从本质上讲,我希望为团队中的其他开发人员尽可能简化“正常运行”stream程。

在开发过程中您需要:

  • 重build你的前端
  • 重新启动你的Node.js应用程序
  • 重新运行你的testing
  • debugging你的代码
  • 等等

如果您在开发过程中尝试将文件放到Docker容器中,您将在开发过程中产生开销。 您的计算机和开发人员将花费更多时间,然后使用本地使用的node.js

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

在开发过程中需要Docker的时候?

  • 安装像MongoDB,Redis等外部依赖项的开发者/ CI / QA环境docker-compose现在是最好的解决scheme。
  • 使可交付的神器。 Dockerfile + .dockerignore将描述如何使你的神器