Windows10构建React应用Docker Node容器时遇tls: bad record MAC错误求助
问题详情
操作系统信息
- Windows 10
- 版本22H2(内部版本19045.2728)
Dockerfile
# pull the base image FROM node:lts-alpine # set the working direction WORKDIR /app # add `/app/node_modules/.bin` to $PATH ENV PATH /app/node_modules/.bin:$PATH # install app dependencies COPY package*.json ./ RUN npm install # add app COPY . ./ EXPOSE 3000 # start app CMD ["npm", "start"]
package.json 文件
{ "name": "frontend", "version": "0.1.0", "private": true, "proxy": "http://localhost:5000", "devServer": { "allowedHosts": [ "localhost", "127.0.0.1" ] }, "dependencies": { "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", "@material-ui/core": "^4.12.4", "@mui/material": "^5.11.11", "@reduxjs/toolkit": "^1.9.3", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "axios": "^1.3.3", "formik": "^2.2.9", "fsevents": "^2.1.3", "moment": "^2.29.4", "react": "^18.2.0", "react-auth-kit": "^2.8.2", "react-dom": "^18.2.0", "react-helmet": "^6.1.0", "react-icons": "^4.7.1", "react-persist": "^1.0.2", "react-rating-stars-component": "^2.2.0", "react-redux": "^8.0.5", "react-router-dom": "^6.8.1", "react-scripts": "5.0.1", "redux": "^4.2.1", "redux-devtools-extension": "^2.13.9", "redux-persist": "^6.0.0", "redux-thunk": "^2.4.2", "tailwindcss": "^3.2.6", "web-vitals": "^2.1.4", "yup": "^1.0.2" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": [ "react-app", "react-app/jest" ] }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } }
已尝试的解决方法
- 将基础镜像改为
node:14-alpine和node:slim,未解决原问题,反而出现新错误:#10 23.37 npm ERR! notsup Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) - 在PowerShell中重启Docker
主要错误信息
=> ERROR [1/5] FROM docker.io/library/node:lts-alpine@sha256:ffc770cdc09c9e83cccd99d663bb6ed56cfaa1bab94baf1b12b626aebeca9c1 218.1s => => resolve docker.io/library/node:lts-alpine@sha256:ffc770cdc09c9e83cccd99d663bb6ed56cfaa1bab94baf1b12b626aebeca9c10 0.0s => => sha256:ffc770cdc09c9e83cccd99d663bb6ed56cfaa1bab94baf1b12b626aebeca9c10 1.43kB / 1.43kB 0.0s => => sha256:19eaf41f3b8c2ac2f609ac8103f9246a6a6d46716cdbe49103fdb116e55ff0cc 1.16kB / 1.16kB 0.0s => => sha256:f520ad35ba68f1ed1301a5eda87eaa722e468a9fc3a179868a035dc4c5dddaef 6.48kB / 6.48kB 0.0s => => sha256:63b65145d645c1250c391b2d16ebe53b3747c295ca8ba2fcb6b0cf064a4dc21c 3.37MB / 3.37MB 15.7s => => sha256:f41005eb563ce84e6c742a787d6a598fde273c134e94c90acc6115853a7f8315 10.49MB / 47.54MB 218.1s => => sha256:69dcb013f10fed3864b0f9915d6721b09f0c6717e5452ee96e04fde6082322a7 2.35MB / 2.35MB 13.1s => => sha256:00a00d31565028f3c00c64959dafe4587320e8c99a39982ccda8a8a9ccef7123 449B / 449B 15.3s => => extracting sha256:63b65145d645c1250c391b2d16ebe53b3747c295ca8ba2fcb6b0cf064a4dc21c 0.2s ------ > [1/5] FROM docker.io/library/node:lts-alpine@sha256:ffc770cdc09c9e83cccd99d663bb6ed56cfaa1bab94baf1b12b626aebeca9c10: ------ failed to copy: local error: tls: bad record MAC
可行解决方案
针对 tls: bad record MAC 错误
清除Docker镜像缓存
执行命令删除本地缓存的node镜像:docker rmi docker.io/library/node:lts-alpine然后重新拉取镜像:
docker pull node:lts-alpine拉取完成后再重新构建项目。
检查网络连接
该错误通常和TLS握手时的网络问题有关,尝试切换网络(比如从WiFi换成有线网络),或者关闭代理、VPN后重新构建。重置Docker网络设置
在Docker Desktop的设置中找到Network选项,点击Reset to factory defaults,重置完成后重启Docker再尝试构建。
针对 fsevents 平台不兼容错误
fsevents是macOS专属依赖,不需要在Linux镜像中安装,可通过以下两种方式解决:
- 方法1:调整package.json
将fsevents从dependencies移到devDependencies:"devDependencies": { "fsevents": "^2.1.3" } - 方法2:修改Dockerfile中的npm install命令
将RUN npm install改为:RUN npm install --no-optional
内容的提问来源于stack exchange,提问作者vinith
相关产品推荐
相关产品推荐

