简体   繁体   English

Docker 错误:EACCES:权限被拒绝,mkdir

[英]Docker Error: EACCES: permission denied, mkdir

I try to install and create user for Puppeteer in my docker container.我尝试在我的 docker 容器中为Puppeteer安装和创建用户。 But I got an ERROR about user permission for mkdir .但是我得到了关于mkdir的用户权限的ERROR Here is my Dockerfile :这是我的Dockerfile

FROM node:14-alpine AS builder
WORKDIR /app
COPY backend/package.json backend/package-lock.json ./
RUN npm install

COPY backend/src/ ./src
COPY backend/.env ./
COPY backend/.babelrc ./
RUN mkdir -p build/src
RUN npm run build

FROM node:alpine AS runner
WORKDIR /app

RUN apk add --no-cache \
      chromium \
      nss \
      freetype \
      harfbuzz \
      ca-certificates \
      ttf-freefont

ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
    PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser

RUN npm install puppeteer@10.0.0

RUN addgroup -S pptruser && adduser -S -g pptruser pptruser \
    && mkdir -p /home/pptruser/Downloads /app \
    && chown -R pptruser:pptruser /home/pptruser \
    && chown -R pptruser:pptruser /app

# RUN groupadd -r pptruser && useradd -r -g pptruser  \
#     && mkdir -p /home/pptruser/Downloads /app \
#     && chown -R pptruser:pptruser /home/pptruser \
#     && chown -R pptruser:pptruser /app

USER pptruser
# USER root

COPY --from=builder /app/package.json ./
COPY --from=builder /app/package-lock.json ./
COPY --from=builder /app/.env ./
COPY --from=builder /app/build ./build
COPY --from=builder /app/node_modules ./node_modules

EXPOSE 8081

CMD ["node", "build/src/index.js"]

I used addgroup and adduser to create a user.我使用 addgroup 和 adduser 来创建用户。 I followed this document https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#running-puppeteer-in-docker .我遵循了这份文件https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#running-puppeteer-in-docker And I got an error:我得到了一个错误:

backend    | Error: EACCES: permission denied, mkdir '/app/build/src/services/csv'
backend    |     at Object.mkdirSync (node:fs:1334:3)
backend    |     at Object.<anonymous> (/app/build/src/services/download.js:36:16)
backend    |     at Module._compile (node:internal/modules/cjs/loader:1101:14)
backend    |     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
backend    |     at Module.load (node:internal/modules/cjs/loader:981:32)
backend    |     at Function.Module._load (node:internal/modules/cjs/loader:822:12)
backend    |     at Module.require (node:internal/modules/cjs/loader:1005:19)
backend    |     at require (node:internal/modules/cjs/helpers:102:18)
backend    |     at Object.<anonymous> (/app/build/src/services/index.js:11:17)
backend    |     at Module._compile (node:internal/modules/cjs/loader:1101:14) {
backend    |   errno: -13,
backend    |   syscall: 'mkdir',
backend    |   code: 'EACCES',
backend    |   path: '/app/build/src/services/csv'
backend    | }

My function I got that Error :我的 function 我得到了那个Error

const csvFolder = path.join(__dirname, "csv");
if (!fs.existsSync(csvFolder)) {
  fs.mkdirSync(csvFolder);
}

But when I user: USER root .但是当我用户: USER root I don't get this error.我没有收到此错误。 My directory tree:我的目录树:

|-src
| |-services
| |-routes
| |-controllers
|-docker
| |-Dockerfile.backend

Its due to you are using 2 images for builder, another one for runner.这是因为您使用 2 个图像作为构建器,另一个图像用于跑步者。

So while you copy build folder from builder to runner, the permission does not keep on both container.因此,当您将build文件夹从构建器复制到运行器时,权限不会保留在两个容器上。

If you use 1 image as the link given, it will run successfully without error as you mentioned above.如果您使用 1 个图像作为给定的链接,它将成功运行而不会出现上面提到的错误。

FROM alpine only.仅限FROM alpine

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 npm 安装:错误:EACCES:权限被拒绝,mkdir - npm install: Error: EACCES: permission denied, mkdir 错误:EACCES:权限被拒绝,mkdir &#39;/.npm&#39; - Error: EACCES: permission denied, mkdir '/.npm' 错误:EACCES:权限被拒绝; 不能 mkdir - Error: EACCES: permission denied; cannot mkdir Docker - “错误:EACCES:权限被拒绝,mkdir '/project/node_modules/.cache/@babel'” - Docker - "Error: EACCES: permission denied, mkdir '/project/node_modules/.cache/@babel'" 出现错误:chromedriver 安装失败错误 eacces 权限被拒绝 mkdir - getting error : chromedriver installation failed error eacces permission denied mkdir 错误 EACCES 权限被拒绝 mkdir multer node.js - Error EACCES permission denied mkdir multer node.js Ubuntu - nodejs - npm install -g &gt; 错误:EACCES:权限被拒绝,mkdir - Ubuntu - nodejs - npm install -g > Error: EACCES: permission denied, mkdir 错误:EACCES:权限被拒绝,使用 npm 安装时 mkdir - Error: EACCES: permission denied, mkdir when installing sth with npm npm ERR:错误:EACCES,权限被拒绝。 mkdir '/.npm' - npm ERR! Error: EACCES: permission denied, mkdir '/.npm' 节点应用程序收到“错误:EACCES:权限被拒绝,mkdir &#39;.tmp&#39; - node application getting "Error: EACCES: permission denied, mkdir '.tmp'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM