gpt4 book ai didi

node.js - 由于无法运行 ps ax 错误,无法在 Docker 容器中运行 Meteor 应用程序

转载 作者:搜寻专家 更新时间:2023-10-31 23:21:39 25 4
gpt4 key购买 nike

我从 Dockerfile 创建了一个 Docker 镜像来运行示例 Meteor 应用程序。我的 Dockerfile 如下。

FROM node:0.10.30

RUN curl https://install.meteor.com/ | sh
RUN npm install -g meteorite

RUN cd /tmp && npm install libxmljs exec-sync path
RUN mkdir -p /home/app && cp -a /tmp/node_modules /home/app/

ADD src/ /home/app/

WORKDIR /home/app

ENV PORT 3000
EXPOSE 3000

我的代码使用了 3 个 npm 包 libxmljs、exec-sync 和路径,它们都已成功安装。 Meteor 应用程序代码和 .meteor 文件夹被复制到 docker 镜像内的 /home/app 中。但是当我尝试运行 Meteor 应用程序时,出现以下错误。

sudo docker run -t -i 46630d0dc02e meteor
[[[[[ ~home/app ]]]]]

=> Started proxy.
=> Starting MongoDB... -
/.meteor/tools/cef2bcd356/lib/node_modules/fibers/future.js:206
throw(ex);
^
Error: Couldn't run ps ax: {"killed":false,"code":127,"signal":null}; Command failed: /bin/sh: 1: ps: not found
at Object.Future.wait (/.meteor/tools/cef2bcd356/lib/node_modules/fibers/future.js:326:15)
at findMongoPids (/.meteor/tools/cef2bcd356/tools/run-mongo.js:89:14)
at findMongoAndKillItDead (/.meteor/tools/cef2bcd356/tools/run-mongo.js:119:14)
at launchOneMongoAndWaitForReadyForInitiate (/.meteor/tools/cef2bcd356/tools/run-mongo.js:234:5)
at launchMongo (/.meteor/tools/cef2bcd356/tools/run-mongo.js:496:7)
at _.extend._startOrRestart (/.meteor/tools/cef2bcd356/tools/run-mongo.js:585:19)
at _.extend.start (/.meteor/tools/cef2bcd356/tools/run-mongo.js:551:10)
at _.extend.start (/.meteor/tools/cef2bcd356/tools/run-all.js:131:24)
at Object.exports.run (/.meteor/tools/cef2bcd356/tools/run-all.js:272:10)
at main.registerCommand.name [as func] (/.meteor/tools/cef2bcd356/tools/commands.js:210:17)
at /.meteor/tools/cef2bcd356/tools/main.js:949:23
- - - - -

at /.meteor/tools/cef2bcd356/tools/run-mongo.js:59:22
at ChildProcess.exithandler (child_process.js:651:7)
at ChildProcess.emit (events.js:98:17)
at maybeClose (child_process.js:755:16)
at Socket.<anonymous> (child_process.js:968:11)
at Socket.emit (events.js:95:17)
at Pipe.close (net.js:465:12)

如果有人能解释错误原因并提出在 docker 容器中运行 meteor 应用程序的解决方案或解决方法,我将不胜感激。

最佳答案

node 图像没有 ps 命令。

$ docker run -t -i node:0.10.30 bash
root@1d5c5e3ec748:/# ps
bash: ps: command not found
root@f1d530730c37:/# find / -name ps -type f
root@f1d530730c37:/#

使用另一个具有 ps 命令 的基础镜像,或者通过将 RUN 指令添加到您的 Dockerfile 来在您的镜像上安装 ps 命令,如下所示。

FROM node:0.10.30

# Install ps command
RUN apt-get update
RUN apt-get install procps

RUN curl https://install.meteor.com/ | sh
RUN npm install -g meteorite

RUN cd /tmp && npm install libxmljs exec-sync path
RUN mkdir -p /home/app && cp -a /tmp/node_modules /home/app/

ADD src/ /home/app/

WORKDIR /home/app

ENV PORT 3000
EXPOSE 3000

我测试了它,它工作正常。

$ docker run -t -i nacyot/meteor bash
root@0b56bf009532:/home/app/test# meteor create test
root@0b56bf009532:/home/app/test# cd test
root@0b56bf009532:/home/app/test# meteor
=> App running at: http://localhost:3000/
root@0b56bf009532:/home/app/test# meteor
[[[[[ ~home/app/test ]]]]]

=> Started proxy.
=> Started MongoDB.
=> Started your app.

=> App running at: http://localhost:3000/

关于node.js - 由于无法运行 ps ax 错误,无法在 Docker 容器中运行 Meteor 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25372996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com