docker镜像构建缓存破坏手动触发局部重建既可以避免全部重建又能使某些改动生效

259 次阅读

本文最后更新于 2026年5月15日。

✅ 已添加缓存破坏机制!

修改内容

1. Dockerfile 修改

为所有三个服务的 Dockerfile 添加了缓存破坏参数:

  • EdgeAdmin-main/Dockerfile.local:34-35
  • EdgeNode-main/Dockerfile.local:34-35
  • EdgeAPI-main/Dockerfile.local:34-35
    添加了:
ARG CACHE_BUST=1

并在 COPY start.sh 之前添加:

RUN echo "Cache bust: $CACHE_BUST"

2. docker-compose 文件修改

所有 docker-compose 文件都添加了构建参数:

  • docker-compose.admin.yml:20
  • docker-compose.node.yml:20
  • docker-compose.api.yml:42

使用方法

方式 1:使用时间戳(推荐)

# PowerShell
$env:CACHE_BUST = Get-Date -Format "yyyyMMddHHmmss"
docker-compose -f docker-compose.admin.yml build

# Linux/Mac
CACHE_BUST=$(date +%Y%m%d%H%M%S) docker-compose -f 
docker-compose.admin.yml build

方式 2:使用随机数

# PowerShell
$env:CACHE_BUST = Get-Random
docker-compose -f docker-compose.admin.yml build

# Linux/Mac
CACHE_BUST=$RANDOM docker-compose -f docker-compose.admin.
yml build

方式 3:手动指定

$env:CACHE_BUST = "2"
docker-compose -f docker-compose.admin.yml build

工作原理

  1. 当 CACHE_BUST 值改变时, RUN echo "Cache bust: $CACHE_BUST" 这一步的缓存会失效
  2. 这会强制重新执行后续的 COPY start.sh 命令
  3. 其他步骤(如编译 Go 代码)仍然使用缓存,加快构建速度
    现在你可以使用 $env:CACHE_BUST = Get-Date -Format "yyyyMMddHHmmss" 来强制重新复制脚本文件了!