在 docker 容器内运行 azcopy 会引发 spawn EACCES 错误

问题描述

我创建了以下 docker 文件

FROM node:12.14.0-alpine
RUN apk upgrade --update-cache --available && \
    apk add openssl && \
    apk add --no-cache --virtual python libc6-compat make g++ pkgconf libsecret-dev && \
    rm -rf /var/cache/apk/*

RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
workdir /app

copY . .

RUN npm install --registry https://registry.npmjs.org @azure-tools/azcopy-node

EXPOSE 8080
CMD ["npm","run","start"]

在容器内运行 azcopy 命令时出现以下错误

spawn /app/node_modules/@azure-tools/azcopy-linux/dist/bin/azcopy_linux_amd64 EACCES

我该如何解决

解决方法

我必须在 docker 文件中为 azprocess 添加权限,现在它可以工作了:

FROM node:12.14.0-alpine
RUN apk upgrade --update-cache --available && \
    apk add openssl && \
    apk add --no-cache --virtual python libc6-compat make g++ pkgconf libsecret-dev && \
    rm -rf /var/cache/apk/*

RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
WORKDIR /app

COPY . .

RUN npm install --registry https://registry.npmjs.org @azure-tools/azcopy-node
RUN chmod a+x /app/node_modules/@azure-tools/azcopy-linux/dist/bin/azcopy_linux_amd64

EXPOSE 8080
CMD ["npm","run","start"]