我正在为我的团队构建代码库以在一个项目上进行开发,它将使用docker作为测试环境。我构建了两个映像,用于数据库服务器的mongodb和一个nodejs映像,如下所示:
FROM node:12-slim
WORKDIR /usr/app/prj-backend
ENV NODE_ENV development
RUN apt-get update && apt-get install -y python
COPY package*.json ./
RUN npm install
EXPOSE 3000
CMD ["npm", "run", "devstart"]
我将一切都与docker compose配合使用>
version: "3"
services:
mongo:
image: mongo:3.6
ports:
- "27017:27017"
prj-backend-service:
build: .
ports:
- "5000:5000"
environment:
- MONGODB_URI=mongodb://mongo:27017/
volumes:
- .:/usr/app/prj-backend
- ./usr/app/prj-backend/node_modules
一切似乎一开始都很好,然后我发现了一个问题。在开发过程中,团队成员可以通过在容器外壳上运行npm install
来安装新软件包,但是当他将代码推送到GitHub而其他成员将其拉下时,他们的容器无法获得新软件包。此外,如果由于某种原因需要删除工作容器并创建一个新容器,则需要再次附加到其外壳并运行npm install来安装丢失的软件包
请给我一个解决问题的方法,无论如何,当我按下docker-compose up
时,泊坞窗会检查是否有软件包更改并安装它,甚至根据旧版本构建新映像。请注意,我不想在每次容器启动时都运行npm install,因为我的package.json具有大量的deps,即使没有更改,它也将花费很长的时间
对不起,我的英语不好,谢谢!