96SEO 2026-09-08 09:39 5
上周有个同事跑过来问我。说他打包的 Java 服务镜像有 1.2 GB,推到仓库慢得要命,部署拉镜像也得等半天。我一看他的 Dockerfile,好家伙。直接FROM openjdk:把整个 JDK 和 Debian 程序全打进去了。
镜像太大这件事,对业务造成了两大痛点:一是 CI/CD 速度被拖慢;二是安全和成本问题凸显,这篇文章就聊聊怎么把镜像从 1 GB 压到 100 MB 以内,让你在持续交付中不再为大镜像而头疼。

先搞清楚体积都花在哪了。跑一下docker history myapp你会看到每一层的大小。大部分情况下的罪魁祸首就这几个:
/var/cachenpm 的node_modules。说白了你的镜像里有一半东西在运行时根本用不到。
这是瘦身的第一步先,也是最马上见效的一步。其实,现在主流的轻量镜像有三选:Alpine、distroless、scratch。
进去到处看。按理说,好在 distroless 提供了 :debug 标签。带了个 busybox shell,开发环境可以用。
实际项目里怎么选?Go 应用我倾向 scratch 或 distroless;Java 应用用 distroless 的 Java 运行时;Node.js 用 Alpine。别用完整的 。换成 或 distroless 的 Java 镜像,体积直接砍掉一半。按理说,
This is core technique for slimming down images. The idea is simple: separate build environment from runtime environment,so that compilers and build tools do not end up in final image.
Maven + Spring Boot 示例:
# 建立阶段
FROM maven:eclipse-temurin AS builder
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:resolve
COPY src ./src
RUN mvn package -DskipTests
# 运行阶段
FROM eclipse-temurin:jre-alpine
WORKDIR /app
COPY --from=builder /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT
A first stage might be ~800 MB。but final image only pulls in JAR and switches to an Alpine JRE base—down to ~180 MB.
A Go project can be even slimmer:
FROM golang: AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o myapp -ldflags="-s -w" .
FROM scratch
COPY --from=builder /app/myapp /myapp
ENTRYPOINT
The flags strip debug info and enforce static linking so that scratch stays tiny.
.dockerignore 是让上下文保持干净的关键工具。如果它为空,“COPY . .” 会把整个项目目录。包括 .git、node_modules、测试文件和 IDE 配置一起拷进去,不仅让图像膨胀,还导致缓存失效频繁。说起来,
A minimal .dockerignore should contain at least:
.git/
nodemodules/
*.md
.env
Dockerfile
docker-compose.yml
pycache/
*.pyc
.idea/
.vscode/
target/
dist/
build/
tmp/
temp/
log/
logs/
*.log*
test/*
tests/*
specs/*
spec/*
coverage/*
vendor/
bowercomponents/
| 原始 Dockerfile | ||
|---|---|---|
FROM node:
WORKDIR /app
COPY .
RUN
npm install
RUN
npm run build
CMD "
}
|
FROM node:-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --omit=dev COPY --from=builder /app/dist ./dist CMD
COPY 与 RUN 顺序正确;合并 RUN 步骤并删除临时缓存。trivy 或其他工具集成到 CI;高危漏洞直接阻止发布,如果你还停留在“只要能跑就行”的思维模式,那你的团队将继续忍受长时间 CI 建立、不必要的数据传输还有潜在漏洞带来的风险。不妨先从上述五步开始改造。你会发现一次性投入数小时即可为后续每次推送和部署省下大量时间与成本——特别是在容器化持续交付流程中,这种收益更是不可估量。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback