更新docker镜像中的node_modules?

时间:2020-05-24 16:51:58

标签: node.js docker npm docker-compose

我正在为我的团队构建代码库以在一个项目上进行开发,它将使用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,即使没有更改,它也将花费很长的时间

对不起,我的英语不好,谢谢!

0 个答案:

没有答案