繁体   English   中英

错误:EACCESS:权限被拒绝,请打开“ build / FILENAME.js”

[英]Error: EACCESS: permission denied, open 'build/FILENAME.js'

Docker容器无法启动。 得到以下错误消息

我以前尝试在777上设置build ,但它什么也没有改变。

的package.json

"scripts": {
    "start": "nodemon --exec babel-node src/main.js",
    "build": "babel src --out-dir build",
    ...

日志

$ babel src --out-dir build
dispatcher_1   | { Error: EACCES: permission denied, open 'build/CalcUtil.js'
dispatcher_1   |     at Object.openSync (fs.js:439:3)
dispatcher_1   |     at Object.writeFileSync (fs.js:1190:35)
dispatcher_1   |     at outputFileSync (/app/node_modules/output-file-sync/index.js:115:5)
dispatcher_1   |     at /app/node_modules/@babel/cli/lib/babel/dir.js:117:41
dispatcher_1   |     at Generator.next (<anonymous>)
dispatcher_1   |     at asyncGeneratorStep (/app/node_modules/@babel/cli/lib/babel/dir.js:74:103)
dispatcher_1   |     at _next (/app/node_modules/@babel/cli/lib/babel/dir.js:76:194)
dispatcher_1   |   errno: -13,
dispatcher_1   |   syscall: 'open',
dispatcher_1   |   code: 'EACCES',
dispatcher_1   |   path: 'build/CalcUtil.js' }

泊坞窗,compose.yml

version: '3.1'

volumes:
  db:

services:
  mongodb:
    image: mongo:4.0-xenial
    restart: always
    volumes:
      - db:/data/db

  mongoclient:
    image: mongoclient/mongoclient
    restart: always
    volumes:
      - db:/data/db
    environment:
      - MONGO_URL=mongodb://mongodb/data
      - MONGOCLIENT_DEFAULT_CONNECTION_URL=mongodb://mongodb/data
    ports:
      - "8071:3000"
    depends_on:
      - mongodb

  dispatcher:
    image: node:10
    restart: always
    volumes:
      - ./tmp:/upload_tmp
      - ./:/app
    working_dir: /app
    ports:
      - "8070:8070"
    command: "make build start"
    user: "1000:1000"
    depends_on:
      - mongodb

要启动Docker容器,我使用docker-compose up -d

我想我也会将评论作为官方答复

因此,在docker-compose.yml文件中,您已定义希望以user: "1000:1000"身份运行服务调度程序,但是在装入卷后,所有者实际上是root:root

我相信这是Linux的特定问题,因为当所有者成为拥有docker守护程序的用户时,在装入卷时具有权限(至少我多次遇到过此问题)

据我所知,在Mac上的Docker桌面上不会发生此问题,并且使用指定用户作为所有者挂载卷。

因此,删除该服务的用户定义将解决此问题。

该错误报告该脚本正在尝试打开文件,并且没有打开该文件的权限。

鉴于有问题的文件是在build目录以及从堆栈跟踪的细节,我猜你的脚本试图写入该文件。

这里最可能的情况是容器中没有build目录,并且您没有编写任何代码来创建build目录。 由于您使用make来控制构建,并且尚未包含Makefile ,因此很难确定。

查看您的构建文件,并确保直接创建输出(如果缺少)。 您可能还希望确保每次运行完整版本时都清除其内容。

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM