我想使用Docker手动缓存node_modules
,如下所示:
COPY . . # copy everything (node_modules is gitignored though)
COPY package.json /tmp/test-deps
RUN (cd /tmp/test-deps && npm install --no-optional > /dev/null 2>&1)
RUN ln -s /tmp/test-deps/node_modules /root/cdt-tests/node_modules
这样可行,但在我看来,每次构建容器时都会重新创建/tmp/test-deps/node_modules
。
如何创建持久性目录,以便每次都不必重新安装node_modules?
很难找到有关如何使用Docker在任何目录中缓存任何内容的信息。
答案 0 :(得分:1)
这是违反直觉的,因为Docker以自己的方式处理缓存 - 但这似乎对我有用:
https://blog.playmoweb.com/speed-up-your-builds-with-docker-cache-bfed14c051bf
糟糕的方式(Docker无法为你做缓存):
FROM mhart/alpine-node
WORKDIR /src
# Copy your code in the docker image
COPY . /src
# Install your project dependencies
RUN npm install
# Expose the port 3000
EXPOSE 3000
# Set the default command to run when a container starts
CMD ["npm", "start"]
通过一个小小的改动,我们可以让Docker为我们缓存一些东西!
FROM mhart/alpine-node:5.6.0
WORKDIR /src
# Expose the port 3000
EXPOSE 3000
# Set the default command to run when a container starts
CMD ["npm", "start"]
# Install app dependencies
COPY package.json /src
RUN npm install
# Copy your code in the docker image
COPY . /src