Dockerfile: COPY pnpm-lock.yaml ./ 报错#1521
上述问题修复后再次运行,报错

不清楚是否是没有挂volumn的原因?但是在文档的具体用例中也未体现
trace: 3f659c60a10e5d8340e505bd43425345
Dockerfile 里,有没有
pnpm install呢
@folgerfan(folger) 有的有的
FROM guergeiro/pnpm:24-10-alpine
WORKDIR /data/orange-ci/workspace
COPY package.json ./
COPY pnpm-lock.yaml ./
RUN npm config set registry https://mirrors.tencent.com/npm/
RUN pnpm install --frozen-lockfile
data/orange-ci/workspace
这个目录应该是ci工作目录,被覆盖了
这里的docker应该是准备环境,比如哪些软件
install可以放到stages里,再配上缓存
为何不在dockerfile内部加一个RUN ls 看下文件tree... 原生debug 分分钟的事
@cnb.ZM6fBONzBPA(Kane.Yu) 是的喔,执行之后node_modules文件是存在的,所以整个人迷茫了起来,嘿嘿(/_\)
data/orange-ci/workspace
这个目录应该是ci工作目录,被覆盖了
这里的docker应该是准备环境,比如哪些软件
install可以放到stages里,再配上缓存
@folgerfan(folger) 因为文档中的用例里是这么用的,所以我就这么用了,依赖的话应该是要放在dockerfile里吧,毕竟都是同一个依赖
@folgerfan(folger) 有没有能在本地模拟云原生构建的方式?就像vscode的github actions一样,就不用反复提交来测试这个构建流程了
刚刚试了下把工作目录设为了/tmp/pnpm,但是还是会在工作流中报错mv: can't rename '/tmp/pnpm/node_modules': No such file or directory
// Dockerfile
FROM guergeiro/pnpm:24-10-alpine
# WORKDIR /data/orange-ci/workspace
WORKDIR /tmp/pnpm
COPY package.json pnpm-lock.yaml ./
RUN npm config set registry https://mirrors.tencent.com/npm/
RUN pnpm install --frozen-lockfile
RUN pwd
RUN ls -alF
// 云原生构建
[build Dockerfile] #10 [6/7] RUN pwd
[build Dockerfile] #10 0.252 /tmp/pnpm
[build Dockerfile] #10 DONE 0.3s
[build Dockerfile]
[build Dockerfile] #11 [7/7] RUN ls -alF
[build Dockerfile] #11 0.370 total 408
[build Dockerfile] #11 0.370 drwxr-xr-x 1 root root 52 Aug 8 01:57 ./
[build Dockerfile] #11 0.370 drwxrwxrwt 1 root root 56 Aug 8 01:57 ../
[build Dockerfile] #11 0.370 drwxr-xr-x 3 root root 27 Aug 8 01:57 .turbo/
[build Dockerfile] #11 0.370 drwxr-xr-x 8 root root 4096 Aug 8 01:57 node_modules/
[build Dockerfile] #11 0.370 -rw-r--r-- 1 root root 1966 Aug 6 04:00 package.json
[build Dockerfile] #11 0.370 -rw-r--r-- 1 root root 408579 Aug 6 04:00 pnpm-lock.yaml
[build Dockerfile] #11 DONE 0.4s
trace: d47e4ccb20edd2a6ac1236b191e39c3a
docker run -it --rm -v $(pwd):$(pwd) -w $(pwd) <image:tag> sh
像这种命令可以用image拉起个容器,登录进去。
你可以试试不在. dockerfile里install,把 install放到stages里。
文档里的例子我们调整下
登录到镜像容器调试可以参考这个文档
https://docs.cnb.cool/zh/build/faq.html#zai-ben-di-ming-ming-hao-de-wei-shen-me-zai-ci-shang-pao-shi-bai-liao
把image换成自己的镜像名
docker run -it --rm -v $(pwd):$(pwd) -w $(pwd) <image:tag> sh像这种命令可以用image拉起个容器,登录进去。
你可以试试不在. dockerfile里install,把 install放到stages里。
文档里的例子我们调整下
@folgerfan(folger) 这个在之前的测试中是可行的,但目前是想在云原生构建中实现这个将 pnpm 缓存到环境镜像中,加速后续pnpm i过程
当然除了Dockerfile中install了,在.cnb.yml中也是配置了install的,只是在复制node_modules的时候就被中断了
提供一下 trace id 或 响应头 traceparent?
9c01d8bb3ef35e7f33ca3b220a836e0f
描述一下重现步骤?更快的确认问题
[build Dockerfile] #7 [4/6] COPY pnpm-lock.yaml ./ [build Dockerfile] #7 ERROR: failed to calculate checksum of ref 9ba0a8c8-5043-4db4-891e-3b4392d39936::rk6xcjs5kp06rnzypxzoj6jif: "/pnpm-lock.yaml": not found [build Dockerfile] [build Dockerfile] #8 [3/6] COPY package.json ./ [build Dockerfile] #8 ERROR: failed to calculate checksum of ref 9ba0a8c8-5043-4db4-891e-3b4392d39936::rk6xcjs5kp06rnzypxzoj6jif: "/package.json": not found仓库是有这两个文件的,.dockerignore文件也是不存在的,Dockerfile文件本地构建是成功的