Docker缓存导致误报释放

axr492tv  于 2023-03-07  发布在  Docker
关注(0)|答案(1)|浏览(104)

我有以下的dockerfile:

FROM debian:buster

#Configure apt to look at my Debian repository
COPY ./apt /etc/apt

#Install the software into the image

RUN apt-get update && apt-get -V -y dist-upgrade && apt-get -V -y --allow-unauthenticated --no-install-recommends --allow-downgrades install -f business=1.1-0

ENTRYPOINT ["/usr/sbin/main.sh"]
CMD []

因此,基本上它安装包“business”从版本1.1-0我有一个问题与docker缓存,我推一个新的代码更改包“business”与相同的版本(1.1-0)[是的,我覆盖版本...]和docker缓存是不够聪明,以拉新的变化.
它使用缓存的层,而不需要我修改代码:作为解决方法,我使用--no-cache构建,但我不喜欢这个解决方案,因为我失去了缓存机制。
有什么办法解决这个问题吗?我可以只从特定的层构建没有缓存的东西吗?

2w3rbyxf

2w3rbyxf1#

你可以的
备选办法a)

  • 分割你的dockerfile,在uncache命令中生成一个随机结果:
RUN apt-get update && apt-get -V -y dist-upgrade 
RUN head -c 23 /dev/urandom > /.randfile  && apt-get -V -y --allow-unauthenticated --no-install-recommends --allow-downgrades install -f business=1.1-0

备选办法B)

  • use multi-staged builds,但是生成具有docker-composedocker build--no-cache选项的第二映像(例如,在第一管道中进行升级,推送为someimage:baseimage,然后在下一阶段使用FROM someimage:baseimage

备选办法c)

相关问题