我有一个看起来像这样的dockerfile
FROM debian:bullseye-slim
RUN apt-get update; \
apt-get install -y libssl-dev; \
apt-get clean
COPY ./runner /runner
CMD /runner
我这样构建图像:
docker build -f RunnerDockerfile -t $(RUNNER_IMG) target/release
即使我的可执行文件(运行程序)发生了变化,它也没有被Docker接收,即Docker使用了缓存。
根据我对文档的理解,如果COPY语句中文件的哈希值发生更改,则应由Docker对其进行提取。
示例运行
md5sum target/release/runner
32169761853677f5f7bc03acb7bbe19b target/release/runner
然后我进行更改:
md5sum target/release/runner
0075f725ce4f2cd779706b2fb9f83218 target/release/runner
重建Docker映像时我得到了
docker build -f RunnerDockerfile -t "runner:latest" target/release
Sending build context to Docker daemon 513.4MB
Step 1/4 : FROM debian:bullseye-slim
---> f8000d381a2c
Step 2/4 : RUN apt-get update; apt-get install -y libssl-dev; apt-get clean
---> Using cache
---> fcd7212dd477
Step 3/4 : COPY ./runner /runner
---> Using cache
---> 1a79d547a9b5
Step 4/4 : CMD /runner
---> Using cache
---> a45a0fd57dd9
Successfully built a45a0fd57dd9
Successfully tagged runner:latest
即它正在将缓存用于COPY。
我做错了还是这是一个错误?