我目前正在 docker 中运行 nodejs express 应用。
docker-compose.yml
# networks and nginx ...
api:
build:
context: ./api
networks:
- back-tier
volumes:
- ./api:/usr/src/api
- /usr/src/api/node_modules
Dockerfile
FROM node:lts-alpine
RUN npm install -g nodemon
WORKDIR /usr/src/api
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "nodemon" ]
这里的问题是卷已挂载,我无法从主机修改 package.json,因为 docker“拥有”package.json。
但是,如果我使用 docker run -it dockername_api /bin/sh
在 docker 中添加依赖项然后执行 npm i package
,package.json 不会在主机端更新。
现在的解决方案是添加新的依赖后,手动将package.json从容器复制回宿主机?另一种做法是停止docker,在宿主机上做npm i package
,然后重建docker,非常麻烦。
谢谢