当包依赖项发生变化时,我试图加快我的纱线安装类型。我试图重现这个问题的核心。
package.json(随机包,示例)
{
"name": "docker-cache",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"colors": "^1.4.0",
"deep-equal": "2.0.3",
"dotenv": "8.2.0",
"eslint": "^7.14.0",
"eslint-config-prettier": "^6.15.0",
"eslint-config-react-app": "^6.0.0",
"eslint-loader": "^4.0.2",
"eslint-plugin-filenames": "^1.3.2",
"eslint-plugin-flowtype": "^5.2.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-react": "^7.21.5",
"eslint-plugin-react-hooks": "^4.2.0",
"exceljs": "^4.2.1",
"fast-check": "^1.24.2",
"file-loader": "6.0.0",
"find": "0.3.0",
"fs-extra": "9.0.1",
"html-webpack-plugin": "4.3.0",
"jest": "26.2.2",
"jest-canvas-mock": "2.2.0",
"jest-pnp-resolver": "^1.2.1",
"json-diff": "0.5.4",
"lerna": "^3.22.1",
"madge": "^5.0.1",
"mini-css-extract-plugin": "0.9.0",
"mobx-logger": "^0.7.1",
"mutationobserver-shim": "^0.3.7",
"node-fetch": "^2.2.1",
"nodemon": "^2.0.4",
"object-hash": "2.0.3",
"optimize-css-assets-webpack-plugin": "5.0.3",
"pdfjs-dist": "^2.5.207",
"pdfreader": "^1.2.6",
"pnp-webpack-plugin": "^1.6.4",
"postcss": "^8.3.11",
"postcss-flexbugs-fixes": "^5.0.2",
"postcss-loader": "^4.0.0",
"postcss-normalize": "^10.0.1",
"postcss-preset-env": "^6.7.0",
"postcss-safe-parser": "^6.0.0",
"prettier": "2.0.5",
"q": "^1.5.1",
"react-dev-utils": "^11.0.4",
"react-error-overlay": "6.0.7",
"react-test-renderer": "16.12.0",
"rimraf": "^3.0.2"
}
}
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM node:16.13.0
WORKDIR /tmp/
COPY package.json yarn.lock ./
ENV YARN_CACHE_FOLDER=/root/.yarn
RUN yarn config set cache-folder $YARN_CACHE_FOLDER # just to be explicit
RUN --mount=type=cache,mode=0777,target=$YARN_CACHE_FOLDER yarn cache list
RUN --mount=type=cache,mode=0777,target=$YARN_CACHE_FOLDER YARN_CACHE_FOLDER=$YARN_CACHE_FOLDER yarn install --network-timeout=600000 --frozen-lockfile
CMD ["echo ", "Done"]
Run Code Online (Sandbox Code Playgroud)
现在我跑docker buildx build --progress=plain --no-cache -t attempt-1 .
第一遍的输出
#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 32B done
#1 DONE 0.0s
#2 [internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.0s
#3 [internal] load metadata for docker.io/library/node:16.13.0
#3 DONE 0.2s
#4 [stage-0 1/6] FROM docker.io/library/node:16.13.0@sha256:580a0850049c59a48f06090edd48c9f966c5e6572bbbabc369ba3ecbc4855dba
#4 DONE 0.0s
#5 [internal] settings cache mount permissions
#5 CACHED
#6 [stage-0 2/6] WORKDIR /tmp/
#6 CACHED
#7 [internal] load build context
#7 transferring context: 509.56kB 0.0s done
#7 DONE 0.0s
#8 [stage-0 3/6] COPY package.json yarn.lock ./
#8 DONE 0.1s
#9 [stage-0 4/6] RUN yarn config set cache-folder /root/.yarn
#9 0.598 yarn config v1.22.15
#9 0.620 success Set "cache-folder" to "/root/.yarn".
#9 0.620 Done in 0.03s.
#9 DONE 0.8s
#10 [stage-0 5/6] RUN --mount=type=cache,mode=0777,target=/root/.yarn yarn cache list
#10 0.370 yarn cache v1.22.15
#10 0.403 Name Version Registry Resolved
#10 0.403 Done in 0.04s.
#10 DONE 0.7s
#11 [stage-0 6/6] RUN --mount=type=cache,mode=0777,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn install --network-timeout=600000 --frozen-lockfile
#11 0.579 yarn install v1.22.15
#11 0.673 [1/4] Resolving packages...
#11 1.081 [2/4] Fetching packages...
#11 28.26 info fsevents@2.3.2: The platform "linux" is incompatible with this module.
#11 28.26 info "fsevents@2.3.2" is an optional dependency and failed compatibility check. Excluding it from installation.
#11 28.28 [3/4] Linking dependencies...
#11 28.28 warning " > eslint-config-react-app@6.0.0" has unmet peer dependency "@typescript-eslint/eslint-plugin@^4.0.0".
#11 28.28 warning " > eslint-config-react-app@6.0.0" has unmet peer dependency "@typescript-eslint/parser@^4.0.0".
#11 28.28 warning " > eslint-config-react-app@6.0.0" has unmet peer dependency "babel-eslint@^10.0.0".
#11 28.28 warning " > eslint-loader@4.0.2" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
#11 28.29 warning " > file-loader@6.0.0" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
#11 28.29 warning " > html-webpack-plugin@4.3.0" has unmet peer dependency "webpack@>=4.0.0 < 6.0.0".
#11 28.29 warning "lerna > @lerna/version > @lerna/github-client > @octokit/rest > @octokit/plugin-request-log@1.0.4" has unmet peer dependency "@octokit/core@>=3".
#11 28.29 warning " > mini-css-extract-plugin@0.9.0" has unmet peer dependency "webpack@^4.4.0".
#11 28.29 warning " > mobx-logger@0.7.1" has unmet peer dependency "mobx@>= 4.0.0".
#11 28.29 warning " > optimize-css-assets-webpack-plugin@5.0.3" has unmet peer dependency "webpack@^4.0.0".
#11 28.29 warning " > postcss-loader@4.3.0" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
#11 28.29 warning " > postcss-normalize@10.0.1" has unmet peer dependency "browserslist@>= 4".
#11 28.29 warning "postcss-normalize > postcss-browser-comments@4.0.0" has unmet peer dependency "browserslist@>=4".
#11 28.29 warning " > react-test-renderer@16.12.0" has unmet peer dependency "react@^16.0.0".
#11 44.69 [4/4] Building fresh packages...
#11 45.52 Done in 44.95s.
#11 DONE 46.0s
#12 exporting to image
#12 exporting layers
#12 exporting layers 10.5s done
#12 writing image sha256:5866fab165e759bd4c57c48f85856d98dc2bfa778e1f549a39b36289c8749bbb done
#12 naming to docker.io/library/attempt-1 done
#12 DONE 10.5s
Run Code Online (Sandbox Code Playgroud)
接下来,我删除了该colors包,运行yarn(以更新yarn.lock)并重新运行docker buildx。
第二遍输出
#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 32B done
#1 DONE 0.0s
#2 [internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.0s
#3 [internal] load metadata for docker.io/library/node:16.13.0
#3 DONE 0.5s
#4 [stage-0 1/6] FROM docker.io/library/node:16.13.0@sha256:580a0850049c59a48f06090edd48c9f966c5e6572bbbabc369ba3ecbc4855dba
#4 DONE 0.0s
#5 [internal] settings cache mount permissions
#5 CACHED
#6 [stage-0 2/6] WORKDIR /tmp/
#6 CACHED
#7 [internal] load build context
#7 transferring context: 511.02kB 0.0s done
#7 DONE 0.0s
#8 [stage-0 3/6] COPY package.json yarn.lock ./
#8 DONE 0.0s
#9 [stage-0 4/6] RUN yarn config set cache-folder /root/.yarn
#9 0.341 yarn config v1.22.15
#9 0.372 success Set "cache-folder" to "/root/.yarn".
#9 0.372 Done in 0.04s.
#9 DONE 0.4s
#10 [stage-0 5/6] RUN --mount=type=cache,mode=0777,target=/root/.yarn yarn cache list
#10 0.338 yarn cache v1.22.15
#10 0.368 Name Version Registry Resolved
#10 0.369 Done in 0.03s.
#10 DONE 0.4s
#11 [stage-0 6/6] RUN --mount=type=cache,mode=0777,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn install --network-timeout=600000 --frozen-lockfile
#11 0.473 yarn install v1.22.15
#11 0.544 [1/4] Resolving packages...
#11 0.949 [2/4] Fetching packages...
#11 27.43 info fsevents@2.3.2: The platform "linux" is incompatible with this module.
#11 27.43 info "fsevents@2.3.2" is an optional dependency and failed compatibility check. Excluding it from installation.
#11 27.45 [3/4] Linking dependencies...
#11 27.46 warning " > eslint-config-react-app@6.0.0" has unmet peer dependency "@typescript-eslint/eslint-plugin@^4.0.0".
#11 27.46 warning " > eslint-config-react-app@6.0.0" has unmet peer dependency "@typescript-eslint/parser@^4.0.0".
#11 27.46 warning " > eslint-config-react-app@6.0.0" has unmet peer dependency "babel-eslint@^10.0.0".
#11 27.46 warning " > eslint-loader@4.0.2" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
#11 27.46 warning " > file-loader@6.0.0" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
#11 27.46 warning " > html-webpack-plugin@4.3.0" has unmet peer dependency "webpack@>=4.0.0 < 6.0.0".
#11 27.46 warning "lerna > @lerna/version > @lerna/github-client > @octokit/rest > @octokit/plugin-request-log@1.0.4" has unmet peer dependency "@octokit/core@>=3".
#11 27.46 warning " > mini-css-extract-plugin@0.9.0" has unmet peer dependency "webpack@^4.4.0".
#11 27.46 warning " > mobx-logger@0.7.1" has unmet peer dependency "mobx@>= 4.0.0".
#11 27.46 warning " > optimize-css-assets-webpack-plugin@5.0.3" has unmet peer dependency "webpack@^4.0.0".
#11 27.46 warning " > postcss-loader@4.3.0" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
#11 27.46 warning " > postcss-normalize@10.0.1" has unmet peer dependency "browserslist@>= 4".
#11 27.46 warning "postcss-normalize > postcss-browser-comments@4.0.0" has unmet peer dependency "browserslist@>=4".
#11 27.46 warning " > react-test-renderer@16.12.0" has unmet peer dependency "react@^16.0.0".
#11 40.10 [4/4] Building fresh packages...
#11 40.82 Done in 40.35s.
#11 DONE 41.1s
#12 exporting to image
#12 exporting layers
#12 exporting layers 11.8s done
#12 writing image sha256:668320ce0930ff1174cdc14ec5cdc35f4de94e328b04a745ba41ec48643b074c done
#12 naming to docker.io/library/attempt-1 done
#12 DONE 11.8s
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,第二遍看起来与第一遍非常相似。结果yarn cache list仍然是空的,大约需要 40-46 秒才能完成,表明没有进行缓存。
节目输出docker system df -v:
hwtq1k2pkn4u exec.cachemount 0B 17 minutes ago 17 seconds ago 14 false
所以它肯定是在存储它......但它只是空的。我在 macOS 上。
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |