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
将描述如何使你的神器