2017-09-09 41 views
0

我正在尝试在Docker中开发ReactJS项目,并且该项目将在团队中共享。Docker - 用于开发环境的npm安装

不过,我无法理解这是如何工作的,因为我想量份额我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-compose体积共享还没有发生,所以它认为没有package.json失败。所以这听起来像我必须将package.json复制到容器中,这对于开发而言并不理想,只要进行更改即可。

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

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

回答

0

在开发过程中,你需要:

  • 重建前端
  • 重新启动您的Node.js应用
  • 再跑你测试
  • 调试代码

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

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

当您在开发过程中需要Docker吗?与喜欢的MongoDB,Redis的等等docker-compose对外依存度

  • 设置开发商/ CI/QA环境是最好的解决方案权利了。
  • 制作可传递的神器。 Dockerfile + .dockerignore将介绍如何让你的神器
+0

嗯有意思,我不知道这是不是一个最佳实践。在Node或Docker社区的其他地方记录吗? – djt

+0

我在会议/聚会视频中看到过好几次,但我不记得有关此的任何文档。这只是常识,不是文档的一部分。 – galkin