使用" npm install" for Docker

时间:2017-09-09 16:21:33

标签: node.js reactjs docker

我正在尝试使用ReactJS项目在Docker中进行开发,这个项目将在整个团队中共享。

但是,我无法理解其工作原理,因为我想将我的app目录卷分享到容器中,但似乎我必须将package.json复制到容器中{ {1}}因此运行npm install

我的目录结构是:

nom run start

dockerfile

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

搬运工-compose.yml

FROM node:7.8.0

WORKDIR /app
RUN npm install

EXPOSE 3000
CMD npm run start

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

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

在Docker中处理Node开发是否有更好的解决方案?从本质上讲,我希望能够实现"运行"为团队中的其他开发人员尽可能简化流程。

1 个答案:

答案 0 :(得分:0)

在开发过程中,您需要:

  • 重建你的前端
  • 重启Node.js应用程序
  • 重新运行测试
  • 调试您的代码

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

这就是为什么在开发过程中将Node.js包装在Docker中是不好的做法。

在开发过程中需要Docker时?

  • 设置具有外部依赖性的开发人员/ CI / QA环境,如MongoDB,Redis等。docker-compose是最佳解决方案权利。
  • 制作可交付的工件。 Dockerfile + .dockerignore将描述如何制作您的工件