我正在阅读一本关于引导微服务的书,作者提供了以下 dockerfile,旨在用于开发。**
FROM node:12.18.1-alpine
WORKDIR /usr/src/app
COPY package*.json .
CMD npm config set cache-min 999999 && \
npm install && \
npm run start:dev
CMD
这里的命令显然有些不同寻常。提供的基本原理如下:通过npm install
在容器启动时执行,我们可以“利用 npm 缓存,因此在容器启动时安装比在构建过程中安装要快得多”。
这个CMD
命令在幕后发生了什么?这与在RUN
命令之前安装依赖项的CMD
命令有什么不同?与此相关的是,为什么我们需要制定cache-min
政策?
**源文件未复制到此处,因为它们包含在已安装的卷中。
编辑:这里也是 docker compose 文件
version: '3'
services:
history:
image: history
build:
context: ./history
dockerfile: Dockerfile-dev
container_name: history
volumes:
- /tmp/history/npm-cache:/root/.npm:z
- ./history/src:/usr/src/app/src/:z
ports:
- '4002:80'
environment:
- PORT=80
- NODE_ENV=development
restart: 'no'
...
在开发时,您经常会更改项目中包含的包。通过这种方式,您无需在执行此操作时构建新映像。您只需停止并启动容器,它就会安装新的软件包。
不过,我对 package*.json 的复制感到有些惊讶。我假设这将使用像您所说的源代码那样的卷传递到图像中。它仍然可以这样做,也许确实如此。我们需要看看你的docker run
命令是否知道。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句