【发布时间】:2021-11-09 09:41:40
【问题描述】:
多年来我一直在使用 docker,现在我发现了一个非常奇怪的行为:docker build 命令使用的 Dockerfile 不是我拥有的。
查看下一个日志:
PS D:\reposNovabase\charmander\charmanderWarehouse> type Dockerfile
FROM adoptopenjdk/openjdk11-openj9:jdk-11.0.11_9_openj9-0.26.0-alpine
WORKDIR /app
COPY build/libs/charmanderWarehouse-1.0.0-SNAPSHOT.jar /app
EXPOSE 8083
CMD ["java", "-Xmx70m", "-jar", "charmanderWarehouse-1.0.0-SNAPSHOT.jar"]
PS D:\reposNovabase\charmander\charmanderWarehouse> docker build -f Dockerfile -t javiersedano/charmander-warehouse:test1 .
[+] Building 0.2s (7/7) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 32B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/adoptopenjdk/openjdk11-openj9:jdk-11.0.11_9_openj9-0.26.0-alpine 0.0s
=> [1/3] FROM docker.io/adoptopenjdk/openjdk11-openj9:jdk-11.0.11_9_openj9-0.26.0-alpine 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 57B 0.0s
=> CACHED [2/3] WORKDIR /app 0.0s
=> ERROR [3/3] COPY build/libs/charmanderPurchases-1.0.0-SNAPSHOT.jar /app 0.0s
------
> [3/3] COPY build/libs/charmanderPurchases-1.0.0-SNAPSHOT.jar /app:
------
failed to compute cache key: "/build/libs/charmanderPurchases-1.0.0-SNAPSHOT.jar" not found: not found
PS D:\reposNovabase\charmander\charmanderWarehouse>
查看 Dockerfile 如何使用
COPY build/libs/charmanderWarehouse-1.0.0-SNAPSHOT.jar /app
但是docker build 失败了
ERROR [3/3] COPY build/libs/charmanderPurchases-1.0.0-SNAPSHOT.jar /app
为什么要复制charmanderPurchases?!!
更多提示:文件失败 (charmanderPurchases) 在之前构建的兄弟项目中的先前 Dockerfile 中使用(所有这些都是构建一些图像的伪 CI .cmd 进程的一部分)。
更多提示:我有一个解决方法。如果我使用
type Dockerfile | build -f - -t javiersedano/charmander-warehouse:test1 .
然后它按预期工作;此外,在此解决方法之后,第一个命令也可以按预期工作...但是,失败的构建是兄弟项目的构建,因为 charmanderPurchases 尝试复制 charmanderWarehouse... WTF?!
看起来 Dockerfile 内容本身正在被缓存或其他什么,它正在重用以前的 Dockerfile。
环境:使用 WSL2 后端的 Windows 10 上适用于 Windows 3.6.0 的 Docker 桌面。
Edit1:用 4.0.1 测试过,仍然失败。
有什么提示吗?有什么想法吗?
【问题讨论】:
-
你给这个项目和兄弟项目的标签是一样的吗?还是驻留在同一目录中?我认为您对缓存的看法是正确的,而不是因为...
-
它们不是同一个标签(每个标签都被构建并推送到 docker hub)。它们都不驻留在同一目录中(.cmd 本质上是
cd dir1; docker build -t dir1:latest; cd ..; cd dir2; docker build -t dir2:latest; cd ..;) -
我明白了,感谢您的回复,您可以尝试重新启动 docker 服务吗?也许它陷入了某种模糊的状态
-
没有帮助。实际上,我已经升级到最新版本 n(所以在此过程中重新启动)。
标签: docker docker-desktop