内容简介:]Recently I moved my staticThis docker image resulted in a 419MB final image and took about 3 minutes to build. There are some obvious issues with this. For instance every-time I change any file it must go through and reinstall all of my node_modules. Seco
]
Recently I moved my static Eleventy site over to a docker container. This was one of the first docker images I have made in a while so it started inefficient.
FROM nginx:1.17.10-alpine RUN apk add --update nodejs npm RUN npm install -g @11ty/eleventy COPY . /app WORKDIR /app RUN npm install RUN eleventy . RUN rm -r /usr/share/nginx/html/ RUN cp /app/_site/ /usr/share/nginx/html/ -r EXPOSE 80
This docker image resulted in a 419MB final image and took about 3 minutes to build. There are some obvious issues with this. For instance every-time I change any file it must go through and reinstall all of my node_modules. Secondly, I was installing Eleventy globally while at the same time installing it during the second npm install.
FROM nginx:1.17.10-alpine as npmpackages RUN apk add --update nodejs npm WORKDIR /app COPY package.json . RUN npm install FROM nginx:1.17.10-alpine RUN apk add --update nodejs npm WORKDIR /app COPY --from=npmpackages /app /app COPY . . RUN npm run build RUN rm -r /usr/share/nginx/html/ RUN cp /app/_site/ /usr/share/nginx/html/ -r EXPOSE 80
This build was segmented into two portions, at first it just copied the package.json and ran npm install. This means that assuming that the package.json file did not change at all then after the first docker build it would cache the node_modules so that it did not have to npm install on each build. This shrunk the docker image down to 329MB, which was a little better, but still heavily bloated. After poking around in the docker image I saw the issue, I was keeping the /app folder even though it was not being used after the _site folder was copied to the nginx serve directory.
FROM nginx:1.17.10-alpine as npmpackages RUN apk add --update nodejs npm WORKDIR /app COPY package.json . RUN npm install FROM nginx:1.17.10-alpine as builder RUN apk add --update nodejs npm WORKDIR /app COPY --from=npmpackages /app /app COPY . . RUN npm run build RUN rm -r /usr/share/nginx/html/ RUN cp /app/_site/ /usr/share/nginx/html/ -r FROM nginx:1.17.10-alpine COPY --from=builder /app/_site/ /usr/share/nginx/html/ EXPOSE 80
This is the final image that I ended up with, note how the final layer does not install NPM or NodeJS. This is to save space as at that point the builder
and npmpackage
layers have already done everything related to NodeJS. This image only took up 69.1MB which is pretty good considering the compiled version of my site is over 50MB due to various images. The next step in shrinking my site's docker image will be compressing the images down, but that is unrelated to the docker image itself.
EDIT: After compression of all of the images and WaifuCraft resource pack the whole site is 19MB with the image being 39MB
By Hampton Moore以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java5.0Tiger程序高手秘笈
BrettMclaughlin / 东南大学出版社 / 2005-10 / 28.00元
代号为 “Tiger”的下一个 Java 版本,不只是个小改动版。在语言核心中有超过 100 项以上的变动,同时有大量的对 library 与 API 所做的加强,让开发者取得许多新的功能、工具与技术。但在如此多的变化下,应该从何处开始着手?也许可以从既长又无趣的语言规范说明书开始看起;或等待最少 500 页的概念与理论巨著出版;甚至还可以直接把玩新的 JDK 看看能够有什么发现;或者借由《Jav......一起来看看 《Java5.0Tiger程序高手秘笈》 这本书的介绍吧!
JSON 在线解析
在线 JSON 格式化工具
RGB CMYK 转换工具
RGB CMYK 互转工具