Docker镜像优化:从1.16GB到22.4MB,真强!
阅读本文大概需要 3 分钟。
来自:猿某某
灵活性:即使是最复杂的应用程序也可以容器化。 轻量化:容器共享主机内核,使得它们远比虚拟机高效。 便携性:可以做到本地编译,到处运行。 松耦合:容器自我封装,一个容器被替换或升级不会打断别的容器。 安全性:容器对进程进行了严格的限制和隔离,而无需用户进行任何配置。
# 优化过程
npx create-react-app app --template typescript
FROM node:10
WORKDIR /app
COPY app /app
RUN npm install -g webserver.local
RUN npm install && npm run build
EXPOSE 3000
CMD webserver.local -d ./build
第一步优化:使用轻量化基础镜像
FROM node:10-alpine
WORKDIR /app
COPY app /app
RUN npm install -g webserver.local
RUN npm install && npm run build
EXPOSE 3000
CMD webserver.local -d ./build
第二步优化:多阶段构建
FROM node:10-alpine AS build
WORKDIR /app
COPY app /app
RUN npm install && npm run build
FROM node:10-alpineWORKDIR /app
RUN npm install -g webserver.local
COPY --from=build /app/build ./build
EXPOSE 3000
CMD webserver.local -d ./build
FROM node:10-alpine AS build
WORKDIR /app
COPY app /app
RUN npm install && npm run build
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
推荐阅读:
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
朕已阅
评论