Docker镜像优化:从1.16GB到22.4MB,真强!
阅读本文大概需要 3 分钟。
来自:猿某某
灵活性:即使是最复杂的应用程序也可以容器化。 轻量化:容器共享主机内核,使得它们远比虚拟机高效。 便携性:可以做到本地编译,到处运行。 松耦合:容器自我封装,一个容器被替换或升级不会打断别的容器。 安全性:容器对进程进行了严格的限制和隔离,而无需用户进行任何配置。 
# 优化过程
npx create-react-app app --template typescript

FROM node:10WORKDIR /appCOPY app /appRUN npm install -g webserver.localRUN npm install && npm run buildEXPOSE 3000CMD webserver.local -d ./build

第一步优化:使用轻量化基础镜像

FROM node:10-alpineWORKDIR /appCOPY app /appRUN npm install -g webserver.localRUN npm install && npm run buildEXPOSE 3000CMD webserver.local -d ./build

第二步优化:多阶段构建
FROM node:10-alpine AS buildWORKDIR /appCOPY app /appRUN npm install && npm run buildFROM node:10-alpineWORKDIR /appRUN npm install -g webserver.localCOPY --from=build /app/build ./buildEXPOSE 3000CMD webserver.local -d ./build

FROM node:10-alpine AS buildWORKDIR /appCOPY app /appRUN npm install && npm run buildFROM nginx:stable-alpineCOPY --from=build /app/build /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]


推荐阅读:
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
朕已阅 
评论

