Node.js Docker容器代码139中的Gulp命令

Node.js Docker容器代码139中的Gulp命令,node.js,docker,gulp,Node.js,Docker,Gulp,我有一个docker撰写文件: rest-api: image: x/rest-api build: context: ./rest-api/dockerfiles/ dockerfile: local.Dockerfile environment: - BUILD_ENV=local ports: - "8001:8001" volumes: - ./rest-api:/var/www/re

我有一个docker撰写文件:

  rest-api:
    image: x/rest-api
    build:
      context: ./rest-api/dockerfiles/
      dockerfile: local.Dockerfile
    environment:
      - BUILD_ENV=local
    ports:
      - "8001:8001"
    volumes:
      - ./rest-api:/var/www/rest-api
    user: $UID
  web:
    image: x/web-front
    build:
      context: ./web-front
      dockerfile: dockerfiles/local.Dockerfile
    environment:
      - BUILD_ENV=local
    depends_on:
      - rest-api
    links:
      - rest-api
    ports:
      - "3001:3001"
      - "35729:35729"
    volumes:
  - ./web-front:/var/www/web-front
  - ./web-front/logs/:/root/.npm/
    user: $UID
这两个是local.Dockerfile。 rest api:

    FROM node:8-alpine

    RUN mkdir -p /var/www/rest-api/
    WORKDIR /var/www/rest-api/

    EXPOSE 8001

    CMD [ "npm", "run", "dev" ]
网页前端:

 FROM node:8-alpine

RUN mkdir -p /var/www/web-front/
WORKDIR /var/www/web-front/

EXPOSE 3001 35729

CMD [ "npm", "run", "local" ]
我基本上是从主机安装我的所有node_模块,然后将该卷映射到容器中RESTAPI和web front的相应文件夹。然后从容器中运行package.json中的命令。 对于RESTAPI,我没有遇到任何问题。在web前端思想上,该过程存在分段错误(内核转储)和错误代码139

CMD [ "npm", "run", "local" ]
运行:

"NODE_ENV=local ./node_modules/gulp/bin/gulp.js dev --location=local --env=dev --livereload=1",
当我直接在我的计算机上运行
npm run local
时,我没有这个问题。 我已经尝试了
npm重建
,但没有成功 容器上的节点版本与主机上的节点版本相同。 我有一个调试:

    0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'local' ]
2 info using npm@5.0.0
3 info using node@v8.0.0
4 verbose run-script [ 'prelocal', 'local', 'postlocal' ]
5 info lifecycle web-front@0.5.0~prelocal: web-front@0.5.0
6 silly lifecycle web-front@0.5.0~prelocal: no script for prelocal, continuing
7 info lifecycle web-front@0.5.0~local: web-front@0.5.0
8 verbose lifecycle web-front@0.5.0~local: unsafe-perm in lifecycle true
9 verbose lifecycle web-front@0.5.0~local: PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/var/www/web-front/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
10 verbose lifecycle web-front@0.5.0~local: CWD: /var/www/web-front
11 silly lifecycle web-front@0.5.0~local: Args: [ '-c',
11 silly lifecycle   'NODE_ENV=local ./node_modules/gulp/bin/gulp.js dev --location=local --env=dev --livereload=1' ]
12 silly lifecycle web-front@0.5.0~local: Returned: code: 139  signal: null
13 info lifecycle web-front@0.5.0~local: Failed to exec local script
14 verbose stack Error: web-front@0.5.0 local: `NODE_ENV=local ./node_modules/gulp/bin/gulp.js dev --location=local --env=dev --livereload=1`
14 verbose stack Exit status 139
14 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/lifecycle.js:283:16)
14 verbose stack     at emitTwo (events.js:125:13)
14 verbose stack     at EventEmitter.emit (events.js:213:7)
14 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/spawn.js:40:14)
14 verbose stack     at emitTwo (events.js:125:13)
14 verbose stack     at ChildProcess.emit (events.js:213:7)
14 verbose stack     at maybeClose (internal/child_process.js:887:16)
14 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:208:5)
15 verbose pkgid web-front@0.5.0
16 verbose cwd /var/www/web-front
17 verbose Linux 4.4.0-66-generic
18 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "local"
19 verbose node v8.0.0
20 verbose npm  v5.0.0
21 error code ELIFECYCLE
22 error errno 139
23 error web-front@0.5.0 local: `NODE_ENV=local ./node_modules/gulp/bin/gulp.js dev --location=local --env=dev --livereload=1`
23 error Exit status 139
24 error Failed at the web-front@0.5.0 local script.
24 error This is probably not a problem with npm. There is likely additional logging output above.
25 verbose exit [ 139, true ]
0信息如果它以ok结尾,它就工作了
1 verbose cli['/usr/local/bin/node','/usr/local/bin/npm','run','local']
2信息使用npm@5.0.0
3信息使用node@v8.0.0
4详细运行脚本['prelocal','local','postlocal']
5信息生命周期网站-front@0.5.0~prelocal:web-front@0.5.0
6.生命周期网站-front@0.5.0~prelocal:没有用于prelocal的脚本,正在继续
7信息生命周期网站-front@0.5.0~local:web-front@0.5.0
8详细生命周期网站-front@0.5.0~local:生命周期中的不安全烫发为true
9详细生命周期web-front@0.5.0~local:PATH:/usr/local/lib/node\u modules/npm/bin/node gyp-bin:/var/www/web-front/node\u modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
10详细的生命周期网站-front@0.5.0~local:CWD:/var/www/web front
11.生命周期网络-front@0.5.0~local:Args:['-c',
11“NODE_ENV=local./NODE_modules/gulp/bin/gulp.js dev--location=local--ENV=dev--livereload=1”]
12.生命周期网站-front@0.5.0~local:返回:代码:139信号:null
13信息生命周期网站-front@0.5.0~local:无法执行本地脚本
14详细堆栈错误:web-front@0.5.0local:`NODE_ENV=local./NODE_modules/gulp/bin/gulp.js dev--location=local--ENV=dev--livereload=1`
14详细堆栈退出状态139
14 EventEmitter上的详细堆栈。(/usr/local/lib/node_modules/npm/lib/utils/lifecycle.js:283:16)
14 emitTwo上的详细堆栈(events.js:125:13)
14 EventEmitter.emit上的详细堆栈(events.js:213:7)
14子进程上的详细堆栈。(/usr/local/lib/node_modules/npm/lib/utils/spawn.js:40:14)
14 emitTwo上的详细堆栈(events.js:125:13)
14 ChildProcess.emit上的详细堆栈(events.js:213:7)
14 maybeClose的详细堆栈(internal/child_process.js:887:16)
14 Process.ChildProcess.\u handle.onexit处的详细堆栈(internal/child\u Process.js:208:5)
15详细的pkgid网站-front@0.5.0
16详细的cwd/var/www/web front
17详细Linux 4.4.0-66-generic
18详细argv“/usr/local/bin/node”“/usr/local/bin/npm”“运行”“本地”
19详细节点v8.0.0
20详细的npm v5.0.0
21错误代码ELIFECYCLE
22错误号139
23错误网页-front@0.5.0local:`NODE_ENV=local./NODE_modules/gulp/bin/gulp.js dev--location=local--ENV=dev--livereload=1`
23错误退出状态139
24错误在web上失败-front@0.5.0本地脚本。
24错误这可能不是npm的问题。上面可能还有其他日志输出。
25详细退出[139,正确]
你知道这个错误是从哪里来的吗?
提前谢谢。

这个问题是因为阿尔卑斯山。Alpine使用musl而不是glibc,这导致一些库出现问题。使用debian或任何其他使用glibc的发行版。

您的挂载点和工作目录是否与“web-front”不同?我的意思是您将
/web-front映射到/var/www/web-front
,但在
/var/www/twasker-web-front/
@SujanAdiga-Hum-no中运行
npm run local
,抱歉,这是复制粘贴错误。我会编辑的,谢谢你,伙计。如果你的答案能解决我的问题,我会尽快试试看