如何使用 multer 在 docker 中写入和读取文件
我正在使用 multer 将上传文件保存到特定目录。 我在本地工作得并不完美,但是当我使用 docker 构建时,multer 不会将文件写入我的文件夹中。
是我的 multer 代码:
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, __basedir + "/uploads/")
},
filename: (req, file, cb) => {
cb(null, file.originalname)
}
})
我决定在 docker-compose 中使用卷,如下所示:
volumes:
- ./uploads:/app/uploads
和错误错误:EACCES:权限被拒绝,打开'/app/uploads/Funder Statement Test data.xlsx'
这 是我的 dockerFile:
FROM node:fermium-alpine
RUN apk add --no-cache \
chromium \
nss \
freetype \
harfbuzz \
ca-certificates \
ttf-freefont \
nodejs \
yarn
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
# Puppeteer v10.0.0 works with Chromium 92.
RUN yarn add [email protected]
# Add user so we don't need --no-sandbox.
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 everything after as non-privileged user.
USER pptruser
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3030
CMD ["npm", "start"]
知道如何解决我的错误吗?
I'm using multer to save upload file to specific directory.
I'ts working perfect in local, but when I build using docker, the multer isn't write the file in my folder.
this is my multer code :
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, __basedir + "/uploads/")
},
filename: (req, file, cb) => {
cb(null, file.originalname)
}
})
and i decided to using volumes in docker-compose like this :
volumes:
- ./uploads:/app/uploads
and error Error: EACCES: permission denied, open '/app/uploads/Funder Statement Test data.xlsx'
this is my dockerFile :
FROM node:fermium-alpine
RUN apk add --no-cache \
chromium \
nss \
freetype \
harfbuzz \
ca-certificates \
ttf-freefont \
nodejs \
yarn
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
# Puppeteer v10.0.0 works with Chromium 92.
RUN yarn add [email protected]
# Add user so we don't need --no-sandbox.
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 everything after as non-privileged user.
USER pptruser
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3030
CMD ["npm", "start"]
Any idea how to solve my error ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
运行 Docker 容器的用户可能没有写入映射文件夹
./uploads
的权限。确保权限正确。The user under which the Docker container is running likely has no permission to write into the mapped folder
./uploads
. Make sure, the permissions are correct.