Docker 错误:无法解决:archive/tar: 未知文件模式?rwxr-xr-x

问题描述 投票:0回答:1

我尝试容器化反应应用程序,但此错误仍然存在。

这是日志:

[+] Building 0.0s (0/0)  docker:default

[+] Building 4.2s (9/16)                                                                                                                                                                         docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                       0.0s

 => => transferring dockerfile: 380B                                                                                                                                                                       0.0s 

 => [internal] load metadata for docker.io/library/nginx:stable-perl                                                                                                                                       4.0s 
 => [internal] load metadata for docker.io/library/node:lts-alpine                                                                                                                                         4.0s 
 => [auth] library/nginx:pull token for registry-1.docker.io                                                                                                                                               0.0s
 => [auth] library/node:pull token for registry-1.docker.io                                                                                                                                                0.0s
 => [internal] load .dockerignore                                                                                                                                                                          0.0s 
 => => transferring context: 52B                                                                                                                                                                           0.0s 
 => CANCELED [build 1/7] FROM docker.io/library/node:lts-alpine@sha256:a7b980c958bfe4d84ee9263badd95a40c8bb50ad5afdb87902c187fefaef0e24                                                                    0.1s 
 => => resolve docker.io/library/node:lts-alpine@sha256:a7b980c958bfe4d84ee9263badd95a40c8bb50ad5afdb87902c187fefaef0e24                                                                                   0.0s 
 => => sha256:a7b980c958bfe4d84ee9263badd95a40c8bb50ad5afdb87902c187fefaef0e24 1.43kB / 1.43kB                                                                                                             0.0s 
 => => sha256:db4b1d98b5a92263f2b9221c4d7930ce6b02f9834926c8b6174bfed2913cea16 1.16kB / 1.16kB                                                                                                             0.0s 
 => => sha256:5414852b0111feebb3686ec58f92f2edb534cef2826b575581cdcadd42a7f527 7.21kB / 7.21kB                                                                                                             0.0s 
 => ERROR [internal] load build context                                                                                                                                                                    0.1s 
 => => transferring context: 1.43MB                                                                                                                                                                        0.0s 

 => CANCELED [stage-1 1/2] FROM docker.io/library/nginx:stable-perl@sha256:3083ef7ca8bc4f7dc24596382092ae5e53d1169a6e706b83c2b448d044919ba3                                                                0.1s 
 => => resolve docker.io/library/nginx:stable-perl@sha256:3083ef7ca8bc4f7dc24596382092ae5e53d1169a6e706b83c2b448d044919ba3                                                                                 0.0s 
 => => sha256:3083ef7ca8bc4f7dc24596382092ae5e53d1169a6e706b83c2b448d044919ba3 10.27kB / 10.27kB                                                                                                           0.0s 
 => => sha256:15585364514a1e9df46ec8d6ddfd1a56ee316724f47cb7b375ce4d4df137c856 2.49kB / 2.49kB                                                                                                             0.0s 
 => => sha256:e790832271e7c18bce18208197ed61dde7dd4821af50789ceb4bc2c5d1b0b205 9.97kB / 9.97kB                                                                                                             0.0s 

------
 > [internal] load build context:
------
ERROR: failed to solve: archive/tar: unknown file mode ?rwxr-xr-x

我查了一下;好像和文件权限有关系。我尝试通过 Windows 资源管理器更改目录中的文件,但没有任何反应。

我已经尝试过 chmod 但仍然没有成功。

这是 Dockerfile

来自节点:lts-alpine AS 构建

工作目录/最佳/

复制包*.json ./

运行 npm 安装

复制 src/ /optimal/src

复制公共//最佳/公共

运行 chmod -R 755 /optimal/src /optimal/public

运行 npm 运行构建

CMD [“npm”,“开始”]

来自 nginx:stable-perl

WORKDIR /usr/share/nginx/html

复制 --from=build /optimal/build /usr/share/nginx/html

暴露80

CMD [“nginx”,“-g”,“守护进程关闭;” ]

docker dockerfile docker-build
1个回答
0
投票

此错误与构建上下文中的文件具有 Docker 无法识别的异常或无效文件模式有关。当从 Windows 文件系统复制文件时,通常会发生这种情况,与基于 Unix 的系统相比,Windows 文件系统使用不同的文件权限方案。

检查文件权限和属性:

确保上下文目录中的文件(尤其是 src 和 public)没有异常属性。您可以使用

ls -l
检查类 Unix 系统上的文件权限。

确保正确的行结尾:

有时,如果在 Windows 上进行编辑,文件可能会有不正确的行结尾。使用 dos2unix 等工具来转换文件。

find . -type f -exec dos2unix {} \;

然后尝试这个 dockerfile

FROM node:lts-alpine AS build

WORKDIR /optimal/

# Copy package files and install dependencies
COPY package*.json ./
RUN npm install

# Copy source files
COPY src/ /optimal/src
COPY public/ /optimal/public

# Sanitize file permissions in the build context
RUN find /optimal/src /optimal/public -type d -exec chmod 755 {} \;
RUN find /optimal/src /optimal/public -type f -exec chmod 644 {} \;

RUN npm run build

FROM nginx:stable-perl

WORKDIR /usr/share/nginx/html

# Copy build artifacts
COPY --from=build /optimal/build /usr/share/nginx/html

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

确保您有一个 .dockerignore 文件以排除不必要的文件。示例:

节点模块 Dockerfile .dockerignore

重建 Docker 镜像:

清理 Docker 并重建镜像:

docker system prune --all --force
docker build -t my-react-app .

© www.soinside.com 2019 - 2024. All rights reserved.